Author: jm
Date: 2012-06-29 08:50:42 -0700 (Fri, 29 Jun 2012)
New Revision: 29726
Added:
core3/api/trunk/model-api/src/main/java/org/cytoscape/model/CyDisposable.java
Modified:
core3/api/trunk/model-api/src/main/java/org/cytoscape/model/CyNetwork.java
core3/api/trunk/presentation-api/src/main/java/org/cytoscape/view/presentation/RenderingEngine.java
core3/api/trunk/viewmodel-api/src/main/java/org/cytoscape/view/model/CyNetworkView.java
core3/impl/trunk/command-executor-impl/src/main/java/org/cytoscape/command/internal/available/dummies/DummyNetwork.java
core3/impl/trunk/command-executor-impl/src/main/java/org/cytoscape/command/internal/available/dummies/DummyNetworkView.java
core3/impl/trunk/ding-impl/ding-presentation-impl/src/test/java/org/cytoscape/view/DNetworkViewTest.java
core3/impl/trunk/ding-impl/ding-presentation-impl/src/test/java/org/cytoscape/view/DNodeViewTest.java
core3/impl/trunk/model-impl/impl/src/main/java/org/cytoscape/model/internal/CyNetworkManagerImpl.java
core3/impl/trunk/model-impl/impl/src/main/java/org/cytoscape/model/internal/CyRootNetworkImpl.java
core3/impl/trunk/model-impl/impl/src/main/java/org/cytoscape/model/internal/CySubNetworkImpl.java
core3/impl/trunk/presentation-impl/src/main/java/org/cytoscape/view/presentation/internal/CyActivator.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/BirdsEyeViewHandler.java
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/NetworkTreeNode.java
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/NetworkViewManager.java
core3/impl/trunk/viewmodel-impl/impl/src/main/java/org/cytoscape/view/model/internal/CyNetworkViewManagerImpl.java
Log:
Fixes #1165, #53, #628, #1178: Fixed leaks of CyNetwork and CyNetworkView
Added:
core3/api/trunk/model-api/src/main/java/org/cytoscape/model/CyDisposable.java
===================================================================
---
core3/api/trunk/model-api/src/main/java/org/cytoscape/model/CyDisposable.java
(rev 0)
+++
core3/api/trunk/model-api/src/main/java/org/cytoscape/model/CyDisposable.java
2012-06-29 15:50:42 UTC (rev 29726)
@@ -0,0 +1,41 @@
+/*
+ Copyright (c) 2008, 2010, The Cytoscape Consortium (www.cytoscape.org)
+
+ This library is free software; you can redistribute it and/or modify it
+ under the terms of the GNU Lesser General Public License as published
+ by the Free Software Foundation; either version 2.1 of the License, or
+ any later version.
+
+ This library is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF
+ MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. The software and
+ documentation provided hereunder is on an "as is" basis, and the
+ Institute for Systems Biology and the Whitehead Institute
+ have no obligations to provide maintenance, support,
+ updates, enhancements or modifications. In no event shall the
+ Institute for Systems Biology and the Whitehead Institute
+ be liable to any party for direct, indirect, special,
+ incidental or consequential damages, including lost profits, arising
+ out of the use of this software and its documentation, even if the
+ Institute for Systems Biology and the Whitehead Institute
+ have been advised of the possibility of such damage. See
+ the GNU Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public License
+ along with this library; if not, write to the Free Software Foundation,
+ Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
+*/
+package org.cytoscape.model;
+
+/**
+ * An interface for objects that require an explicit clean up at the end of
+ * their lifecycle. Users of CyDisposable objects must call dispose() when
+ * the instances are no longer required or memory/resource leaks may occur.
+ * @CyAPI.Api.Interface
+ */
+public interface CyDisposable {
+ /**
+ * Free up any memory or resources used by this object.
+ */
+ void dispose();
+}
Modified:
core3/api/trunk/model-api/src/main/java/org/cytoscape/model/CyNetwork.java
===================================================================
--- core3/api/trunk/model-api/src/main/java/org/cytoscape/model/CyNetwork.java
2012-06-29 15:10:03 UTC (rev 29725)
+++ core3/api/trunk/model-api/src/main/java/org/cytoscape/model/CyNetwork.java
2012-06-29 15:50:42 UTC (rev 29726)
@@ -39,7 +39,7 @@
* be directed, undirected, or both.
* @CyAPI.Api.Interface
*/
-public interface CyNetwork extends CyIdentifiable {
+public interface CyNetwork extends CyIdentifiable, CyDisposable {
/**
* A boolean column created by default for every CyNode or CyEdge that
* holds the selection state of the entry.
Modified:
core3/api/trunk/presentation-api/src/main/java/org/cytoscape/view/presentation/RenderingEngine.java
===================================================================
---
core3/api/trunk/presentation-api/src/main/java/org/cytoscape/view/presentation/RenderingEngine.java
2012-06-29 15:10:03 UTC (rev 29725)
+++
core3/api/trunk/presentation-api/src/main/java/org/cytoscape/view/presentation/RenderingEngine.java
2012-06-29 15:50:42 UTC (rev 29726)
@@ -7,6 +7,7 @@
import javax.swing.Icon;
+import org.cytoscape.model.CyDisposable;
import org.cytoscape.view.model.View;
import org.cytoscape.view.model.VisualLexicon;
import org.cytoscape.view.model.VisualProperty;
@@ -21,7 +22,7 @@
* can be anything, including {@link org.cytoscape.model.CyTable}.
* @CyAPI.Api.Interface
*/
-public interface RenderingEngine<T> {
+public interface RenderingEngine<T> extends CyDisposable {
/**
* Returns {@linkplain View} being rendered.
Modified:
core3/api/trunk/viewmodel-api/src/main/java/org/cytoscape/view/model/CyNetworkView.java
===================================================================
---
core3/api/trunk/viewmodel-api/src/main/java/org/cytoscape/view/model/CyNetworkView.java
2012-06-29 15:10:03 UTC (rev 29725)
+++
core3/api/trunk/viewmodel-api/src/main/java/org/cytoscape/view/model/CyNetworkView.java
2012-06-29 15:50:42 UTC (rev 29726)
@@ -36,6 +36,7 @@
import java.util.Collection;
+import org.cytoscape.model.CyDisposable;
import org.cytoscape.model.CyEdge;
import org.cytoscape.model.CyNetwork;
import org.cytoscape.model.CyNode;
@@ -49,7 +50,7 @@
* Consolidated data structure for graph object views.
* @CyAPI.Api.Interface
*/
-public interface CyNetworkView extends View<CyNetwork> {
+public interface CyNetworkView extends View<CyNetwork>, CyDisposable {
/**
* Returns a View for a specified Node.
Modified:
core3/impl/trunk/command-executor-impl/src/main/java/org/cytoscape/command/internal/available/dummies/DummyNetwork.java
===================================================================
---
core3/impl/trunk/command-executor-impl/src/main/java/org/cytoscape/command/internal/available/dummies/DummyNetwork.java
2012-06-29 15:10:03 UTC (rev 29725)
+++
core3/impl/trunk/command-executor-impl/src/main/java/org/cytoscape/command/internal/available/dummies/DummyNetwork.java
2012-06-29 15:50:42 UTC (rev 29726)
@@ -30,4 +30,5 @@
public CyTable getTable(Class <?extends CyIdentifiable> type, String
namespace) {return null;}
public CyRow getRow(CyIdentifiable entry, String tableName) {return
null;}
public CyRow getRow(CyIdentifiable entry) {return null;}
+ public void dispose() {}
}
Modified:
core3/impl/trunk/command-executor-impl/src/main/java/org/cytoscape/command/internal/available/dummies/DummyNetworkView.java
===================================================================
---
core3/impl/trunk/command-executor-impl/src/main/java/org/cytoscape/command/internal/available/dummies/DummyNetworkView.java
2012-06-29 15:10:03 UTC (rev 29725)
+++
core3/impl/trunk/command-executor-impl/src/main/java/org/cytoscape/command/internal/available/dummies/DummyNetworkView.java
2012-06-29 15:50:42 UTC (rev 29726)
@@ -25,4 +25,5 @@
public void clearValueLock(VisualProperty<?> vp) {}
public CyNetwork getModel() { return null;}
public Long getSUID() { return null;}
+ public void dispose() {}
}
Modified:
core3/impl/trunk/ding-impl/ding-presentation-impl/src/test/java/org/cytoscape/view/DNetworkViewTest.java
===================================================================
---
core3/impl/trunk/ding-impl/ding-presentation-impl/src/test/java/org/cytoscape/view/DNetworkViewTest.java
2012-06-29 15:10:03 UTC (rev 29725)
+++
core3/impl/trunk/ding-impl/ding-presentation-impl/src/test/java/org/cytoscape/view/DNetworkViewTest.java
2012-06-29 15:50:42 UTC (rev 29726)
@@ -16,6 +16,7 @@
import org.cytoscape.model.NetworkTestSupport;
import org.cytoscape.model.TableTestSupport;
import org.cytoscape.model.subnetwork.CyRootNetworkManager;
+import org.cytoscape.service.util.CyServiceRegistrar;
import org.cytoscape.spacial.SpacialIndex2DFactory;
import org.cytoscape.spacial.internal.rtree.RTreeFactory;
import org.cytoscape.task.EdgeViewTaskFactory;
@@ -73,6 +74,8 @@
@Mock
private HandleFactory handleFactory;
+ @Mock
+ private CyServiceRegistrar registrar;
private final TableTestSupport tableSupport = new TableTestSupport();
private final NetworkTestSupport netSupport = new NetworkTestSupport();
@@ -91,7 +94,7 @@
vtfl,
/*nodeViewTFs, edgeViewTFs, emptySpaceTFs,
dropNodeViewTFs,
dropEmptySpaceTFs, */
- manager, eventHelper, tableMgr,annMgr,
dingGRaphLOD, vmm, netViewMgr, handleFactory);
+ manager, eventHelper, tableMgr,annMgr,
dingGRaphLOD, vmm, netViewMgr, handleFactory, registrar);
}
@Override
Modified:
core3/impl/trunk/ding-impl/ding-presentation-impl/src/test/java/org/cytoscape/view/DNodeViewTest.java
===================================================================
---
core3/impl/trunk/ding-impl/ding-presentation-impl/src/test/java/org/cytoscape/view/DNodeViewTest.java
2012-06-29 15:10:03 UTC (rev 29725)
+++
core3/impl/trunk/ding-impl/ding-presentation-impl/src/test/java/org/cytoscape/view/DNodeViewTest.java
2012-06-29 15:50:42 UTC (rev 29726)
@@ -31,6 +31,7 @@
import org.cytoscape.model.NetworkTestSupport;
import org.cytoscape.model.TableTestSupport;
import org.cytoscape.model.subnetwork.CyRootNetworkManager;
+import org.cytoscape.service.util.CyServiceRegistrar;
import org.cytoscape.spacial.SpacialIndex2DFactory;
import org.cytoscape.spacial.internal.rtree.RTreeFactory;
import org.cytoscape.task.EdgeViewTaskFactory;
@@ -96,6 +97,9 @@
private VisualMappingManager vmm;
@Mock
+ private CyServiceRegistrar registrar;
+
+ @Mock
private HandleFactory handleFactory;
private final TableTestSupport tableSupport = new TableTestSupport();
@@ -127,7 +131,7 @@
networkView = new DGraphView(network, dataFactory, cyRoot,
undo, spacialFactory, lexicon,
vtfl,
/*nodeViewTFs, edgeViewTFs, emptySpaceTFs,
dropNodeViewTFs,
- dropEmptySpaceTFs,*/ manager, eventHelper,
tableMgr, annMgr, dingGraphLOD, vmm, netViewMgr, handleFactory);
+ dropEmptySpaceTFs,*/ manager, eventHelper,
tableMgr, annMgr, dingGraphLOD, vmm, netViewMgr, handleFactory, registrar);
dnv1 = (DNodeView) networkView.getDNodeView(node1);
dnv2 = (DNodeView) networkView.getDNodeView(node2);
Modified:
core3/impl/trunk/model-impl/impl/src/main/java/org/cytoscape/model/internal/CyNetworkManagerImpl.java
===================================================================
---
core3/impl/trunk/model-impl/impl/src/main/java/org/cytoscape/model/internal/CyNetworkManagerImpl.java
2012-06-29 15:10:03 UTC (rev 29725)
+++
core3/impl/trunk/model-impl/impl/src/main/java/org/cytoscape/model/internal/CyNetworkManagerImpl.java
2012-06-29 15:50:42 UTC (rev 29726)
@@ -116,8 +116,8 @@
if (subNetwork != baseNetwork)
rootNetwork.removeSubNetwork(subNetwork);
- if (rootNetwork instanceof CyRootNetworkImpl &&
!hasRegisteredNetworks(rootNetwork))
- ((CyRootNetworkImpl) rootNetwork).dispose();
+ if (!hasRegisteredNetworks(rootNetwork))
+ rootNetwork.dispose();
}
// TODO: remove tables!!
Modified:
core3/impl/trunk/model-impl/impl/src/main/java/org/cytoscape/model/internal/CyRootNetworkImpl.java
===================================================================
---
core3/impl/trunk/model-impl/impl/src/main/java/org/cytoscape/model/internal/CyRootNetworkImpl.java
2012-06-29 15:10:03 UTC (rev 29725)
+++
core3/impl/trunk/model-impl/impl/src/main/java/org/cytoscape/model/internal/CyRootNetworkImpl.java
2012-06-29 15:50:42 UTC (rev 29726)
@@ -123,6 +123,7 @@
registerAllTables(networkTableMgr.getTables(this,
CyEdge.class).values());
}
+ @Override
public void dispose() {
serviceRegistrar.unregisterAllServices(columnAdder);
serviceRegistrar.unregisterAllServices(nameSetListener);
Modified:
core3/impl/trunk/model-impl/impl/src/main/java/org/cytoscape/model/internal/CySubNetworkImpl.java
===================================================================
---
core3/impl/trunk/model-impl/impl/src/main/java/org/cytoscape/model/internal/CySubNetworkImpl.java
2012-06-29 15:10:03 UTC (rev 29725)
+++
core3/impl/trunk/model-impl/impl/src/main/java/org/cytoscape/model/internal/CySubNetworkImpl.java
2012-06-29 15:50:42 UTC (rev 29726)
@@ -299,4 +299,8 @@
public String toString() {
return "CyNetwork: " + getSUID() + " name: " +
getRow(this).get("name", String.class);
}
+
+ @Override
+ public void dispose() {
+ }
}
Modified:
core3/impl/trunk/presentation-impl/src/main/java/org/cytoscape/view/presentation/internal/CyActivator.java
===================================================================
---
core3/impl/trunk/presentation-impl/src/main/java/org/cytoscape/view/presentation/internal/CyActivator.java
2012-06-29 15:10:03 UTC (rev 29725)
+++
core3/impl/trunk/presentation-impl/src/main/java/org/cytoscape/view/presentation/internal/CyActivator.java
2012-06-29 15:50:42 UTC (rev 29726)
@@ -20,7 +20,7 @@
Properties renderingEngineManagerProps = new Properties();
renderingEngineManagerProps.setProperty("service.type",
"manager");
- registerService(bc, renderingEngineManager,
RenderingEngineManager.class, renderingEngineManagerProps);
+ registerAllServices(bc, renderingEngineManager,
renderingEngineManagerProps);
registerServiceListener(bc, renderingEngineManager,
"addRenderingEngineFactory",
"removeRenderingEngineFactory",
RenderingEngineFactory.class);
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-06-29 15:10:03 UTC (rev 29725)
+++
core3/impl/trunk/presentation-impl/src/main/java/org/cytoscape/view/presentation/internal/RenderingEngineManagerImpl.java
2012-06-29 15:50:42 UTC (rev 29726)
@@ -92,6 +92,8 @@
final View<?> viewModel = renderingEngine.getViewModel();
final Collection<RenderingEngine<?>> currentEngines =
renderingEngineMap.get(viewModel);
currentEngines.remove(renderingEngine);
+
+ renderingEngine.dispose();
}
@@ -141,6 +143,10 @@
@Override
public void handleEvent(NetworkViewAboutToBeDestroyedEvent e) {
- renderingEngineMap.remove(e.getNetworkView());
+ Collection<RenderingEngine<?>> engines =
renderingEngineMap.remove(e.getNetworkView());
+ if (engines == null)
+ return;
+ for (RenderingEngine<?> engine : engines)
+ engine.dispose();
}
}
Modified:
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/BirdsEyeViewHandler.java
===================================================================
---
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/BirdsEyeViewHandler.java
2012-06-29 15:10:03 UTC (rev 29725)
+++
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/BirdsEyeViewHandler.java
2012-06-29 15:50:42 UTC (rev 29726)
@@ -179,7 +179,9 @@
for (CyNetworkView view : toBeRemoved) {
presentationMap.remove(view);
- viewToEngineMap.remove(view);
+ RenderingEngine<?> engine =
viewToEngineMap.remove(view);
+ if (engine != null)
+ engine.dispose();
}
toBeRemoved.clear();
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-06-29 15:10:03 UTC (rev 29725)
+++
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/NetworkPanel.java
2012-06-29 15:50:42 UTC (rev 29726)
@@ -331,10 +331,13 @@
* @param networkId
*/
private void removeNetwork(final CyNetwork network) {
- final NetworkTreeNode node = this.network2nodeMap.get(network);
+ final NetworkTreeNode node =
this.network2nodeMap.remove(network);
+
if (node == null)
return;
+ treeNodeMap.values().remove(node);
+
final Enumeration<?> children = node.children();
if (children.hasMoreElements()) {
final List<NetworkTreeNode> removedChildren = new
ArrayList<NetworkTreeNode>();
@@ -355,7 +358,7 @@
// Remove from root node
parentNode.removeFromParent();
}
-
+
treeTable.getTree().updateUI();
treeTable.repaint();
}
Modified:
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/NetworkTreeNode.java
===================================================================
---
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/NetworkTreeNode.java
2012-06-29 15:10:03 UTC (rev 29725)
+++
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/NetworkTreeNode.java
2012-06-29 15:50:42 UTC (rev 29726)
@@ -1,6 +1,8 @@
package org.cytoscape.internal.view;
import java.awt.Color;
+import java.lang.ref.Reference;
+import java.lang.ref.WeakReference;
import javax.swing.tree.DefaultMutableTreeNode;
@@ -15,17 +17,17 @@
private final static long serialVersionUID = 1213748836736485L;
private static final Color DEF_NODE_COLOR = Color.RED;
- private final CyNetwork network;
+ private final Reference<CyNetwork> network;
private Color nodeColor;
NetworkTreeNode(final Object userobj, final CyNetwork network) {
super(userobj.toString());
- this.network = network;
+ this.network = new WeakReference<CyNetwork>(network);
this.nodeColor = DEF_NODE_COLOR;
}
CyNetwork getNetwork() {
- return network;
+ return network.get();
}
Color getNodeColor() {
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-06-29 15:10:03 UTC (rev 29725)
+++
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/NetworkViewManager.java
2012-06-29 15:50:42 UTC (rev 29726)
@@ -38,6 +38,7 @@
import java.awt.Component;
import java.awt.Dimension;
+import java.awt.KeyboardFocusManager;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
@@ -53,6 +54,7 @@
import javax.swing.SwingUtilities;
import javax.swing.event.InternalFrameAdapter;
import javax.swing.event.InternalFrameEvent;
+import javax.swing.event.InternalFrameListener;
import org.cytoscape.application.CyApplicationManager;
import org.cytoscape.application.events.SetCurrentNetworkEvent;
@@ -106,6 +108,7 @@
private final Map<CyNetworkView, RenderingEngine<CyNetwork>>
presentationMap;
private final Map<JInternalFrame, CyNetworkView> iFrameMap;
+ private final Map<JInternalFrame, InternalFrameListener> frameListeners;
private final Properties props;
// Supports multiple presentations
@@ -151,6 +154,7 @@
presentationContainerMap = new WeakHashMap<CyNetworkView,
JInternalFrame>();
presentationMap = new WeakHashMap<CyNetworkView,
RenderingEngine<CyNetwork>>();
iFrameMap = new WeakHashMap<JInternalFrame, CyNetworkView>();
+ frameListeners = new HashMap<JInternalFrame,
InternalFrameListener>();
}
/**
@@ -317,6 +321,16 @@
logger.debug("Removing rendering engine: " +
removed);
removed = null;
iFrameMap.remove(frame);
+
+
frame.getRootPane().getLayeredPane().removeAll();
+
frame.getRootPane().getContentPane().removeAll();
+ frame.setClosed(true);
+
+ frame.removeInternalFrameListener(this);
+ InternalFrameListener frameListener =
frameListeners.remove(frame);
+ if (frameListener != null)
+
frame.removeInternalFrameListener(frameListener);
+
frame.dispose();
frame = null;
}
@@ -353,20 +367,19 @@
}
});
- iframe.addInternalFrameListener(new InternalFrameAdapter() {
+ final InternalFrameAdapter frameListener = new
InternalFrameAdapter() {
public void internalFrameClosing(InternalFrameEvent e) {
- netViewMgr.destroyNetworkView(view);
+ if
(netViewMgr.getNetworkViewSet().contains(view))
+ netViewMgr.destroyNetworkView(view);
- Component[] components = iframe.getComponents();
- for (Component cp : components) {
- logger.debug("Removing: " + cp);
- cp = null;
- }
- components = null;
-
+ // See bug #1178 (item #3)
+
KeyboardFocusManager.getCurrentKeyboardFocusManager().clearGlobalFocusOwner();
}
- });
+ };
+ iframe.addInternalFrameListener(frameListener);
+ frameListeners.put(iframe, frameListener);
+
desktopPane.add(iframe);
synchronized (presentationContainerMap) {
Modified:
core3/impl/trunk/viewmodel-impl/impl/src/main/java/org/cytoscape/view/model/internal/CyNetworkViewManagerImpl.java
===================================================================
---
core3/impl/trunk/viewmodel-impl/impl/src/main/java/org/cytoscape/view/model/internal/CyNetworkViewManagerImpl.java
2012-06-29 15:10:03 UTC (rev 29725)
+++
core3/impl/trunk/viewmodel-impl/impl/src/main/java/org/cytoscape/view/model/internal/CyNetworkViewManagerImpl.java
2012-06-29 15:50:42 UTC (rev 29726)
@@ -140,6 +140,8 @@
views.remove(view);
networkViewMap.put(network, views);
}
+
+ view.dispose();
cyEventHelper.fireEvent(new NetworkViewDestroyedEvent(this));
view = 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.