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.