Author: jm
Date: 2012-04-12 14:09:32 -0700 (Thu, 12 Apr 2012)
New Revision: 28810

Modified:
   
core3/impl/trunk/application-impl/src/main/java/org/cytoscape/application/internal/CyApplicationManagerImpl.java
   
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/DingRenderingEngineFactory.java
   
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/ViewTaskFactoryListener.java
   
core3/impl/trunk/presentation-impl/src/main/java/org/cytoscape/view/presentation/internal/RenderingEngineManagerImpl.java
   
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/NetworkViewManager.java
   
core3/impl/trunk/vizmap-impl/impl/src/main/java/org/cytoscape/view/vizmap/internal/VisualMappingManagerImpl.java
Log:
References #628: Fixed some memory leaks involving DGraphView.  Many others 
remain.

Modified: 
core3/impl/trunk/application-impl/src/main/java/org/cytoscape/application/internal/CyApplicationManagerImpl.java
===================================================================
--- 
core3/impl/trunk/application-impl/src/main/java/org/cytoscape/application/internal/CyApplicationManagerImpl.java
    2012-04-12 21:05:20 UTC (rev 28809)
+++ 
core3/impl/trunk/application-impl/src/main/java/org/cytoscape/application/internal/CyApplicationManagerImpl.java
    2012-04-12 21:09:32 UTC (rev 28810)
@@ -118,6 +118,10 @@
                boolean changed = false;
 
                synchronized (this) {
+                       List<CyNetwork> removals = new LinkedList<CyNetwork>();
+                       removals.add(toBeDestroyed);
+                       selectedNetworks.removeAll(removals);
+                       
                        if (toBeDestroyed == currentNetwork) {
                                changed = true;
                                currentNetwork = null;
@@ -159,6 +163,10 @@
                boolean changed = false;
 
                synchronized (this) {
+                       List<CyNetworkView> removals = new 
LinkedList<CyNetworkView>();
+                       removals.add(toBeDestroyed);
+                       selectedNetworkViews.removeAll(removals);
+
                        if (toBeDestroyed == currentNetworkView) {
                                changed = true;
                                currentNetworkView = null;

Modified: 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/DingRenderingEngineFactory.java
===================================================================
--- 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/DingRenderingEngineFactory.java
     2012-04-12 21:05:20 UTC (rev 28809)
+++ 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/DingRenderingEngineFactory.java
     2012-04-12 21:09:32 UTC (rev 28810)
@@ -2,6 +2,8 @@
 
 
 import java.awt.BorderLayout;
+import java.lang.ref.Reference;
+import java.lang.ref.WeakReference;
 import java.util.Properties;
 
 import javax.swing.JComponent;
@@ -117,7 +119,7 @@
 
                        logger.info("DGraphView created as a presentation for 
view model: "
                                        + targetView.getSUID());
-                       vtfListener.viewMap.put(targetView, dgv);
+                       vtfListener.viewMap.put(targetView, new 
WeakReference<DGraphView>(dgv));
 
                        if (presentationContainer instanceof JInternalFrame) {
                                final JInternalFrame inFrame = (JInternalFrame) 
presentationContainer;
@@ -156,7 +158,11 @@
 //     }
 
        public DGraphView getGraphView(CyNetworkView cnv) {
-               return vtfListener.viewMap.get(cnv);
+               Reference<DGraphView> reference = vtfListener.viewMap.get(cnv);
+               if (reference == null) {
+                       return null;
+               }
+               return reference.get();
        }
        
        

Modified: 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/ViewTaskFactoryListener.java
===================================================================
--- 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/ViewTaskFactoryListener.java
        2012-04-12 21:05:20 UTC (rev 28809)
+++ 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/ViewTaskFactoryListener.java
        2012-04-12 21:09:32 UTC (rev 28810)
@@ -1,7 +1,9 @@
 package org.cytoscape.ding.impl;
 
+import java.lang.ref.Reference;
 import java.util.HashMap;
 import java.util.Map;
+import java.util.WeakHashMap;
 
 import org.cytoscape.application.swing.CyEdgeViewContextMenuFactory;
 import org.cytoscape.application.swing.CyNodeViewContextMenuFactory;
@@ -13,7 +15,7 @@
 
 public class ViewTaskFactoryListener {
 
-       final Map<CyNetworkView, DGraphView> viewMap;
+       final Map<CyNetworkView, Reference<DGraphView>> viewMap;
        final Map<NodeViewTaskFactory, Map> nodeViewTFs;
        final Map<EdgeViewTaskFactory, Map> edgeViewTFs;
        final Map<NetworkViewTaskFactory, Map> emptySpaceTFs;
@@ -23,7 +25,7 @@
 
 
        public ViewTaskFactoryListener(){
-               viewMap = new HashMap<CyNetworkView, DGraphView>();
+               viewMap = new WeakHashMap<CyNetworkView, 
Reference<DGraphView>>();
                nodeViewTFs = new HashMap<NodeViewTaskFactory, Map>();
                edgeViewTFs = new HashMap<EdgeViewTaskFactory, Map>();
                emptySpaceTFs = new HashMap<NetworkViewTaskFactory, Map>();

Modified: 
core3/impl/trunk/presentation-impl/src/main/java/org/cytoscape/view/presentation/internal/RenderingEngineManagerImpl.java
===================================================================
--- 
core3/impl/trunk/presentation-impl/src/main/java/org/cytoscape/view/presentation/internal/RenderingEngineManagerImpl.java
   2012-04-12 21:05:20 UTC (rev 28809)
+++ 
core3/impl/trunk/presentation-impl/src/main/java/org/cytoscape/view/presentation/internal/RenderingEngineManagerImpl.java
   2012-04-12 21:09:32 UTC (rev 28810)
@@ -9,13 +9,15 @@
 
 import org.cytoscape.view.model.View;
 import org.cytoscape.view.model.VisualLexicon;
+import org.cytoscape.view.model.events.NetworkViewAboutToBeDestroyedEvent;
+import org.cytoscape.view.model.events.NetworkViewAboutToBeDestroyedListener;
 import org.cytoscape.view.presentation.RenderingEngine;
 import org.cytoscape.view.presentation.RenderingEngineFactory;
 import org.cytoscape.view.presentation.RenderingEngineManager;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class RenderingEngineManagerImpl implements RenderingEngineManager {
+public class RenderingEngineManagerImpl implements RenderingEngineManager, 
NetworkViewAboutToBeDestroyedListener {
        
        private static final Logger logger = 
LoggerFactory.getLogger(RenderingEngineManagerImpl.class);
 
@@ -79,7 +81,6 @@
                final View<?> viewModel = renderingEngine.getViewModel();
                final Collection<RenderingEngine<?>> currentEngines = 
renderingEngineMap.get(viewModel);
                currentEngines.remove(renderingEngine);
-               this.renderingEngineMap.put(viewModel, currentEngines);
        }
        
 
@@ -127,4 +128,8 @@
 
        }
 
+       @Override
+       public void handleEvent(NetworkViewAboutToBeDestroyedEvent e) {
+               renderingEngineMap.remove(e.getNetworkView());
+       }
 }

Modified: 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/NetworkViewManager.java
===================================================================
--- 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/NetworkViewManager.java
   2012-04-12 21:05:20 UTC (rev 28809)
+++ 
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/NetworkViewManager.java
   2012-04-12 21:09:32 UTC (rev 28810)
@@ -59,7 +59,6 @@
 import org.cytoscape.application.events.SetCurrentNetworkViewListener;
 import org.cytoscape.application.swing.CyHelpBroker;
 import org.cytoscape.model.CyNetwork;
-import org.cytoscape.model.CyIdentifiable;
 import org.cytoscape.property.CyProperty;
 import org.cytoscape.view.model.CyNetworkView;
 import org.cytoscape.view.model.CyNetworkViewManager;
@@ -322,6 +321,8 @@
                                RenderingEngine<CyNetwork> removed = 
this.presentationMap.remove(view);
                                logger.debug("#### Removing rendering engine: " 
+ removed);
                                removed = null;
+                               iFrameMap.remove(frame);
+                               presentationContainerMap.remove(view);
                                frame.dispose();
                        }
                } catch (Exception e) {

Modified: 
core3/impl/trunk/vizmap-impl/impl/src/main/java/org/cytoscape/view/vizmap/internal/VisualMappingManagerImpl.java
===================================================================
--- 
core3/impl/trunk/vizmap-impl/impl/src/main/java/org/cytoscape/view/vizmap/internal/VisualMappingManagerImpl.java
    2012-04-12 21:05:20 UTC (rev 28809)
+++ 
core3/impl/trunk/vizmap-impl/impl/src/main/java/org/cytoscape/view/vizmap/internal/VisualMappingManagerImpl.java
    2012-04-12 21:09:32 UTC (rev 28810)
@@ -35,13 +35,12 @@
 package org.cytoscape.view.vizmap.internal;
 
 import java.awt.Color;
-import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
+import java.util.WeakHashMap;
 
 import org.cytoscape.event.CyEventHelper;
-import org.cytoscape.model.CyNode;
 import org.cytoscape.view.model.CyNetworkView;
 import org.cytoscape.view.model.VisualLexicon;
 import org.cytoscape.view.presentation.property.BasicVisualLexicon;
@@ -92,7 +91,7 @@
                this.lexManager = lexManager;
 
                visualStyles = new HashSet<VisualStyle>();
-               network2VisualStyleMap = new HashMap<CyNetworkView, 
VisualStyle>();
+               network2VisualStyleMap = new WeakHashMap<CyNetworkView, 
VisualStyle>();
 
                this.defaultStyle = buildGlobalDefaultStyle(factory);
                this.visualStyles.add(defaultStyle);

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