Author: mes
Date: 2012-01-27 12:04:57 -0800 (Fri, 27 Jan 2012)
New Revision: 28126

Modified:
   
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/NetworkPanel.java
Log:
cleaned up some event handling in NetworkPanel

Modified: 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/NetworkPanel.java
===================================================================
--- 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/NetworkPanel.java
 2012-01-27 01:03:42 UTC (rev 28125)
+++ 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/NetworkPanel.java
 2012-01-27 20:04:57 UTC (rev 28126)
@@ -43,6 +43,7 @@
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
+import java.util.WeakHashMap;
 
 import javax.swing.InputMap;
 import javax.swing.JMenuItem;
@@ -131,6 +132,7 @@
        private final Map<TaskFactory, JMenuItem> popupMap;
        private final Map<TaskFactory, CyAction> popupActions;
        private final Map<CyTable, CyNetwork> nameTables;
+       private final Map<CyTable, CyNetwork> nodeEdgeTables;
 
        private final Map<Long, NetworkTreeNode> treeNodeMap;
 
@@ -157,9 +159,10 @@
 
                // create and populate the popup window
                popup = new JPopupMenu();
-               popupMap = new HashMap<TaskFactory, JMenuItem>();
-               popupActions = new HashMap<TaskFactory, CyAction>();
-               nameTables = new HashMap<CyTable, CyNetwork>();
+               popupMap = new WeakHashMap<TaskFactory, JMenuItem>();
+               popupActions = new WeakHashMap<TaskFactory, CyAction>();
+               nameTables = new WeakHashMap<CyTable, CyNetwork>();
+               nodeEdgeTables = new WeakHashMap<CyTable, CyNetwork>();
 
                setNavigator(bird.getBirdsEyeView());
 
@@ -354,84 +357,114 @@
 
        
        @Override
-       public void handleEvent(NetworkAboutToBeDestroyedEvent nde) {
-               final CyNetwork net = nde.getNetwork();
-               logger.debug("Network about to be destroyed " + net.getSUID());
-               removeNetwork(net.getSUID());
-               nameTables.remove(net.getDefaultNetworkTable());
+       public void handleEvent(final NetworkAboutToBeDestroyedEvent nde) {
+               SwingUtilities.invokeLater( new Runnable() {
+                       public void run() {
+                               final CyNetwork net = nde.getNetwork();
+                               logger.debug("Network about to be destroyed " + 
net.getSUID());
+                               removeNetwork(net.getSUID());
+                               nameTables.remove(net.getDefaultNetworkTable());
+                               
nodeEdgeTables.remove(net.getDefaultNodeTable());
+                               
nodeEdgeTables.remove(net.getDefaultEdgeTable());
+                       }
+               });
        }
 
        
        @Override
-       public void handleEvent(NetworkAddedEvent e) {
-               final CyNetwork net = e.getNetwork();
-               logger.debug("Got NetworkAddedEvent.  Model ID = " + 
net.getSUID());
-
-               addNetwork(net.getSUID());
-               nameTables.put(net.getDefaultNetworkTable(), net);
+       public void handleEvent(final NetworkAddedEvent e) {
+               SwingUtilities.invokeLater( new Runnable() {
+                       public void run() {
+                               final CyNetwork net = e.getNetwork();
+                               logger.debug("Got NetworkAddedEvent.  Model ID 
= " + net.getSUID());
+               
+                               addNetwork(net.getSUID());
+                               nameTables.put(net.getDefaultNetworkTable(), 
net);
+                               
nodeEdgeTables.put(net.getDefaultNodeTable(),net);
+                               
nodeEdgeTables.put(net.getDefaultEdgeTable(),net);
+                       }
+               });
        }
 
        @Override
-       public void handleEvent(RowsSetEvent e) {
+       public void handleEvent(final RowsSetEvent e) {
+               SwingUtilities.invokeLater( new Runnable() {
+                       public void run() {
+                               // if it's the network name, then update the 
title 
+                               CyNetwork n = nameTables.get(e.getSource());
+                               if (n != null) {
+                                       final String title = 
n.getRow(n).get(CyTableEntry.NAME, String.class);
+                                       updateTitle(n, title); 
+                                       return;
+                               }
 
-               // if Selection column has been updated, update the UI
-               Collection<RowSetRecord> rowSetRecords = 
e.getPayloadCollection();
-               Iterator<RowSetRecord> it = rowSetRecords.iterator();
-               while (it.hasNext()) {
-                       RowSetRecord record = it.next();
-                       if 
(record.getColumn().equalsIgnoreCase(CyNetwork.SELECTED)) {
-                               // Selection column is updated, updated the UI
-                               treeTable.getTree().updateUI();
-                               break;
+                               // if it's one of the selected tables, then 
update the counts
+                               n = nodeEdgeTables.get(e.getSource());
+                               if ( n != null ) {
+                                       Collection<RowSetRecord> rowSetRecords 
= e.getPayloadCollection();
+                                       Iterator<RowSetRecord> it = 
rowSetRecords.iterator();
+                                       RowSetRecord record = it.next();
+                                       if ( record != null  && 
record.getColumn().equalsIgnoreCase(CyNetwork.SELECTED)) {
+                                               treeTable.getTree().updateUI();
+                                       }
+                               }
                        }
-               }
-
-               CyNetwork n = nameTables.get(e.getSource());
-
-               if (n == null)
-                       return;
-
-               final String title = n.getRow(n).get(CyTableEntry.NAME, 
String.class);
-               updateTitle(n, title); // this should updated the UI 
regardless...
+               });
        }
 
        @Override
-       public void handleEvent(SetCurrentNetworkViewEvent e) {
-               final CyNetworkView view = e.getNetworkView();
+       public void handleEvent(final SetCurrentNetworkViewEvent e) {
+               SwingUtilities.invokeLater( new Runnable() {
+                       public void run() {
+                               final CyNetworkView view = e.getNetworkView();
 
-               if (view == null) {
-                       logger.warn("Current network view is set to null.");
-                       return;
-               }
-               logger.debug("Got SetCurrentNetworkViewEvent.  View ID = " + 
e.getNetworkView().getSUID());
-               final long curr = e.getNetworkView().getModel().getSUID();
-               focusNetworkNode(curr);
+                               if (view == null) {
+                                       logger.warn("Current network view is 
set to null.");
+                                       return;
+                               }
+                               logger.debug("Got SetCurrentNetworkViewEvent.  
View ID = " + e.getNetworkView().getSUID());
+                               final long curr = 
e.getNetworkView().getModel().getSUID();
+                               focusNetworkNode(curr);
+                       }
+               });
        }
 
        @Override
-       public void handleEvent(SetCurrentNetworkEvent e) {
-               final CyNetwork cnet = e.getNetwork();
-               if (cnet == null) {
-                       logger.warn("Got null for current network.");
-                       return;
-               }
-               logger.debug("Set current network " + cnet.getSUID());
-               focusNetworkNode(cnet.getSUID());
+       public void handleEvent(final SetCurrentNetworkEvent e) {
+               SwingUtilities.invokeLater( new Runnable() {
+                       public void run() {
+                               final CyNetwork cnet = e.getNetwork();
+                               if (cnet == null) {
+                                       logger.warn("Got null for current 
network.");
+                                       return;
+                               }
+                               logger.debug("Set current network " + 
cnet.getSUID());
+                               focusNetworkNode(cnet.getSUID());
+                       }
+               });
        }
 
-       public void handleEvent(NetworkViewAboutToBeDestroyedEvent nde) {
-               logger.debug("Network view about to be destroyed " + 
nde.getNetworkView().getModel().getSUID());
-               
this.treeNodeMap.get(nde.getNetworkView().getModel().getSUID()).setNodeColor(Color.red);
-               treeTable.getTree().updateUI();
+       public void handleEvent(final NetworkViewAboutToBeDestroyedEvent nde) {
+               SwingUtilities.invokeLater( new Runnable() {
+                       public void run() {
+                               logger.debug("Network view about to be 
destroyed " + nde.getNetworkView().getModel().getSUID());
+                               
treeNodeMap.get(nde.getNetworkView().getModel().getSUID()).setNodeColor(Color.red);
+                               treeTable.getTree().updateUI();
+                       }
+               });
        }
 
-       public void handleEvent(NetworkViewAddedEvent nde) {
-               logger.debug("Network view added to NetworkPanel: " + 
nde.getNetworkView().getModel().getSUID());
+       public void handleEvent(final NetworkViewAddedEvent nde) {
+               SwingUtilities.invokeLater( new Runnable() {
+                       public void run() {
+                               logger.debug("Network view added to 
NetworkPanel: " + nde.getNetworkView().getModel().getSUID());
 
-               // Set current network view to the new one.
-               appManager.setCurrentNetworkView(nde.getNetworkView());
-               
this.treeNodeMap.get(nde.getNetworkView().getModel().getSUID()).setNodeColor(Color.black);
-               treeTable.getTree().updateUI();
+                               // Set current network view to the new one.
+                               
appManager.setCurrentNetworkView(nde.getNetworkView());
+                               
treeNodeMap.get(nde.getNetworkView().getModel().getSUID()).setNodeColor(Color.black);
+                               treeTable.getTree().updateUI();
+                       }
+               });
        }
 
        private void addNetwork(final Long network_id) {

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