Author: scooter
Date: 2011-01-19 10:10:33 -0800 (Wed, 19 Jan 2011)
New Revision: 23511

Modified:
   
cytoscape/trunk/application/src/main/java/cytoscape/groups/CyGroupManager.java
Log:
Save internal group viewer references as Strings rather than CyGroupViewers.  
This allows us to
track the group viewer for a group before the group viewer is registered.  This 
should fix
bug 0002350.


Modified: 
cytoscape/trunk/application/src/main/java/cytoscape/groups/CyGroupManager.java
===================================================================
--- 
cytoscape/trunk/application/src/main/java/cytoscape/groups/CyGroupManager.java  
    2011-01-19 17:29:13 UTC (rev 23510)
+++ 
cytoscape/trunk/application/src/main/java/cytoscape/groups/CyGroupManager.java  
    2011-01-19 18:10:33 UTC (rev 23511)
@@ -77,7 +77,7 @@
        /**
         * The list of groups, indexed by the managing viewer
         */
-       private static Map<CyGroupViewer, List<CyGroup>> groupViewerMap = new 
HashMap<CyGroupViewer, List<CyGroup>>();
+       private static Map<String, List<CyGroup>> groupViewerMap = new 
HashMap<String, List<CyGroup>>();
 
        /**
         * The list of groups, indexed by the network
@@ -171,9 +171,10 @@
         * @return the list of groups
         */
        public static List<CyGroup> getGroupList(CyGroupViewer viewer) {
-               if (!groupViewerMap.containsKey(viewer))
+               String viewerName = viewer.getViewerName();
+               if (!groupViewerMap.containsKey(viewerName))
                        return null;
-               List<CyGroup> groupList = groupViewerMap.get(viewer);
+               List<CyGroup> groupList = groupViewerMap.get(viewerName);
 
                return groupList;
        }
@@ -435,12 +436,11 @@
 
                        // Remove this from the viewer's list
                        CyGroup group = groupMap.get(groupNode);
-                       String viewer = group.getViewer();
+                       String viewerName = group.getViewer();
                        CyNetwork network = group.getNetwork();
 
-                       if ((viewer != null) && viewerMap.containsKey(viewer)) {
-                               CyGroupViewer groupViewer = 
viewerMap.get(viewer);
-                               List<CyGroup> gList = 
groupViewerMap.get(groupViewer);
+                       if ((viewerName != null) && 
groupViewerMap.containsKey(viewerName)) {
+                               List<CyGroup> gList = 
groupViewerMap.get(viewerName);
                                gList.remove(group);
                        }
 
@@ -514,33 +514,40 @@
        public static void setGroupViewer(CyGroup group, String viewer, 
CyNetworkView myView, boolean notify) {
                if (group == null) return;
 
+               // System.out.println("Setting group viewer for "+group+" to 
"+viewer);
+
                // See if we need to remove the current viewer first
                if (group.getViewer() != null && 
!group.getViewer().equals(viewer)) {
                        // get the viewer
-                       CyGroupViewer v = (CyGroupViewer) 
viewerMap.get(group.getViewer());
-                       if (groupViewerMap.containsKey(v)) {
-                               groupViewerMap.get(v).remove(group);
-                               if (notify)
+                       String oldViewer = group.getViewer();
+
+                       CyGroupViewer v = null;
+                       if (viewerMap.containsKey(oldViewer))
+                               v = viewerMap.get(oldViewer);
+
+                       if (groupViewerMap.containsKey(oldViewer)) {
+                               groupViewerMap.get(oldViewer).remove(group);
+                               if (notify && v != null)
                                        v.groupWillBeRemoved(group);
                        }
                        ((CyGroupImpl)group).setViewer(null);
                }
 
                if ((viewer != null) && viewerMap.containsKey(viewer)) {
-                       // get the viewer
-                       CyGroupViewer v = viewerMap.get(viewer);
-
                        // The viewer might already be set (this could just be 
a notify)
                        if (!viewer.equals(group.getViewer())) {
                                // create the list if necessary
-                               if (!groupViewerMap.containsKey(v))
-                                       groupViewerMap.put(v, new 
ArrayList<CyGroup>());
+                               if (!groupViewerMap.containsKey(viewer))
+                                       groupViewerMap.put(viewer, new 
ArrayList<CyGroup>());
 
                                // Add this group to the list
-                               groupViewerMap.get(v).add(group);
+                               groupViewerMap.get(viewer).add(group);
                        }
 
                        if (notify) {
+                               // get the viewer
+                               CyGroupViewer v = viewerMap.get(viewer);
+
                                // Make sure we have a view before we notify
                                CyNetworkView currentView = 
Cytoscape.getCurrentNetworkView();
                                if (myView != null) {

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