Author: ruschein
Date: 2010-11-22 14:53:05 -0800 (Mon, 22 Nov 2010)
New Revision: 22983
Added:
core3/viewmodel-api/trunk/src/main/java/org/cytoscape/view/model/events/AboutToRemoveEdgeViewMicroListener.java
core3/viewmodel-api/trunk/src/main/java/org/cytoscape/view/model/events/AboutToRemoveNodeViewMicroListener.java
Modified:
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/impl/AddDeleteHandler.java
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/impl/DEdgeDetails.java
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/impl/DGraphView.java
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/impl/DNodeView.java
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/impl/DingRenderingEngineFactory.java
core3/viewmodel-impl/trunk/impl/src/main/java/org/cytoscape/view/model/internal/NetworkViewImpl.java
Log:
Completed making deletion of selected nodes and edges work.
Modified:
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/impl/AddDeleteHandler.java
===================================================================
---
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/impl/AddDeleteHandler.java
2010-11-22 21:57:55 UTC (rev 22982)
+++
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/impl/AddDeleteHandler.java
2010-11-22 22:53:05 UTC (rev 22983)
@@ -1,15 +1,8 @@
/*
File: AddDeleteHandler.java
- Copyright (c) 2008, The Cytoscape Consortium (www.cytoscape.org)
+ Copyright (c) 2008, 2010, The Cytoscape Consortium (www.cytoscape.org)
- The Cytoscape Consortium is:
- - Institute for Systems Biology
- - University of California San Diego
- - Memorial Sloan-Kettering Cancer Center
- - Institut Pasteur
- - Agilent Technologies
-
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
@@ -33,13 +26,7 @@
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.
- */
-
-//---------------------------------------------------------------------------
-// $Revision: 13022 $
-// $Date: 2008-02-11 13:59:26 -0800 (Mon, 11 Feb 2008) $
-// $Author: mes $
-//---------------------------------------------------------------------------
+*/
package org.cytoscape.ding.impl;
@@ -49,13 +36,11 @@
import org.cytoscape.view.model.events.AddedEdgeViewEvent;
import org.cytoscape.view.model.events.AddedNodeViewEvent;
-//import org.cytoscape.view.model.events.AboutToRemoveEdgeEvent;
-//import org.cytoscape.view.model.events.AboutToRemoveNodeEvent;
import org.cytoscape.view.model.events.AddedEdgeViewListener;
import org.cytoscape.view.model.events.AddedNodeViewListener;
-//import org.cytoscape.view.model.events.AboutToRemoveEdgeListener;
-//import org.cytoscape.view.model.events.AboutToRemoveNodeListener;
+import org.cytoscape.view.model.events.AboutToRemoveEdgeViewMicroListener;
+import org.cytoscape.view.model.events.AboutToRemoveNodeViewMicroListener;
import org.cytoscape.view.model.CyNetworkView;
import org.cytoscape.view.model.View;
@@ -74,11 +59,10 @@
*/
public class AddDeleteHandler
implements AddedEdgeViewListener,
- AddedNodeViewListener
- /* ,
- AboutToRemoveEdgeListener,
- AboutToRemoveNodeListener */{
-
+ AddedNodeViewListener,
+ AboutToRemoveEdgeViewMicroListener,
+ AboutToRemoveNodeViewMicroListener
+{
private final GraphView view;
private final CyNetworkView networkView;
@@ -104,24 +88,20 @@
view.addNodeView(nv.getModel());
view.updateView();
}
-/*
- public void handleEvent(final AboutToRemoveEdgeEvent e) {
- if ( networkView != e.getSource() )
+
+ public void edgeViewAboutToBeRemoved(final View<CyEdge> edgeView, final
CyNetworkView networkView) {
+ if (this.networkView != networkView || edgeView == null)
return;
- final View<CyEdge> edge = e.getEdgeView();
- view.removeEdgeView(edge.getIndex());
+ view.removeEdgeView(edgeView.getModel());
view.updateView();
}
- public void handleEvent(final AboutToRemoveNodeEvent e) {
- if ( networkView != e.getSource() )
+ public void nodeViewAboutToBeRemoved(final View<CyNode> nodeView, final
CyNetworkView networkView) {
+ if (this.networkView != networkView || nodeView == null)
return;
- final View<CyNode> node = e.getNodeView();
- view.removeNodeView(node.getIndex());
+ view.removeNodeView(nodeView.getModel());
view.updateView();
}
- */
}
-
Modified:
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/impl/DEdgeDetails.java
===================================================================
---
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/impl/DEdgeDetails.java
2010-11-22 21:57:55 UTC (rev 22982)
+++
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/impl/DEdgeDetails.java
2010-11-22 22:53:05 UTC (rev 22983)
@@ -245,9 +245,25 @@
final CyNetwork graph = m_view.networkModel;
final CyEdge edgeObj = graph.getEdge(edge);
- final int srcNode = edgeObj.getSource().getIndex();
- final int trgNode = edgeObj.getTarget().getIndex();
+ if (edgeObj == null) {
+ System.err.println("in DEdgeDetails.anchors(): Warning:
non-existent edge="+edge);
+ return returnThis;
+ }
+ final CyNode source = edgeObj.getSource();
+ if (source == null) {
+ System.err.println("in DEdgeDetails.anchors(): Warning:
non-existent source!");
+ return returnThis;
+ }
+ final int srcNode = source.getIndex();
+
+ final CyNode target = edgeObj.getTarget();
+ if (target == null) {
+ System.err.println("in DEdgeDetails.anchors(): Warning:
non-existent target!");
+ return returnThis;
+ }
+ final int trgNode = target.getIndex();
+
// Calculate anchors necessary for self edges.
if (srcNode == trgNode) { // Self-edge.
final CyNode nodeObj = edgeObj.getSource();
Modified:
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/impl/DGraphView.java
===================================================================
---
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/impl/DGraphView.java
2010-11-22 21:57:55 UTC (rev 22982)
+++
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/impl/DGraphView.java
2010-11-22 22:53:05 UTC (rev 22983)
@@ -945,8 +945,6 @@
// If this node was hidden, it won't be in m_spacial.
m_spacial.delete(nodeInx);
- // m_selectedNodes.delete(nodeInx);
- returnThis.graphView = null;
m_contentChanged = true;
}
@@ -2755,11 +2753,13 @@
public void nodeVisualPropertySet(final View<CyNode> nodeView,
final VisualProperty<?> vp, final Object value) {
// Both objects should exist.
- if (value == null || nodeView == null)
+ if (value == null || nodeView == null || nodeView.getModel() ==
null)
return;
- m_nodeViewMap.get(nodeView.getModel()
- .getIndex()).setVisualPropertyValue(vp, value);
+ // Convert to Ding's view object.
+ final Integer index = nodeView.getModel().getIndex();
+ if (m_nodeViewMap.containsKey(index))
+ m_nodeViewMap.get(index).setVisualPropertyValue(vp,
value);
}
/**
@@ -2768,13 +2768,15 @@
*/
@Override
public void edgeVisualPropertySet(final View<CyEdge> edgeView,
- final VisualProperty<?> vp, final Object value) {
- if (value == null || edgeView == null)
+ final VisualProperty<?> vp, final Object value)
+ {
+ if (value == null || edgeView == null || edgeView.getModel() ==
null)
return;
// Convert to Ding's view object.
- m_edgeViewMap.get(edgeView.getModel().getIndex())
- .setVisualPropertyValue(vp, value);
+ final Integer index = edgeView.getModel().getIndex();
+ if (m_edgeViewMap.containsKey(index))
+ m_edgeViewMap.get(index).setVisualPropertyValue(vp,
value);
}
/**
Modified:
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/impl/DNodeView.java
===================================================================
---
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/impl/DNodeView.java
2010-11-22 21:57:55 UTC (rev 22982)
+++
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/impl/DNodeView.java
2010-11-22 22:53:05 UTC (rev 22983)
@@ -103,7 +103,7 @@
static final Paint DEFAULT_LABEL_PAINT = Color.black;
static final double DEFAULT_LABEL_WIDTH = 100.0;
- DGraphView graphView;
+ final DGraphView graphView;
static final int DEFAULT_TRANSPARENCY = 255;
@@ -155,6 +155,9 @@
* @param inx the RootGraph index of node (a negative number).
*/
DNodeView(DGraphView view, int inx, View<CyNode> nv) {
+ if (view == null)
+ throw new NullPointerException("view must never be
null!");
+
graphView = view;
m_inx = inx;
nodeViewModel = nv;
@@ -182,6 +185,7 @@
* @return DOCUMENT ME!
*/
public CyNode getNode() {
+if (graphView == null)
System.err.println("++++++++++++++++++++++++++++++++++++++ in
DNodeView.getNode(): graphView is NULL!!");
synchronized (graphView.m_lock) {
return graphView.networkModel.getNode(m_inx);
}
Modified:
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/impl/DingRenderingEngineFactory.java
===================================================================
---
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/impl/DingRenderingEngineFactory.java
2010-11-22 21:57:55 UTC (rev 22982)
+++
core3/ding-presentation-impl/trunk/src/main/java/org/cytoscape/ding/impl/DingRenderingEngineFactory.java
2010-11-22 22:53:05 UTC (rev 22983)
@@ -1,5 +1,6 @@
package org.cytoscape.ding.impl;
+
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
@@ -23,6 +24,8 @@
import org.cytoscape.view.model.CyNetworkView;
import org.cytoscape.view.model.View;
import org.cytoscape.view.model.VisualLexicon;
+import org.cytoscape.view.model.events.AboutToRemoveEdgeViewMicroListener;
+import org.cytoscape.view.model.events.AboutToRemoveNodeViewMicroListener;
import org.cytoscape.view.model.events.UpdateNetworkPresentationEvent;
import org.cytoscape.view.model.events.UpdateNetworkPresentationEventListener;
import org.cytoscape.view.presentation.RenderingEngine;
@@ -33,6 +36,7 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+
public class DingRenderingEngineFactory implements
RenderingEngineFactory<CyNetwork>,
UpdateNetworkPresentationEventListener {
@@ -133,8 +137,10 @@
}
registrar.registerAllServices(dgv, new Properties());
- registrar.registerAllServices(new AddDeleteHandler(dgv),
- new Properties());
+ final AddDeleteHandler addDeleteHandler = new
AddDeleteHandler(dgv);
+ registrar.registerAllServices(addDeleteHandler, new
Properties());
+ eventHelper.addMicroListener(addDeleteHandler,
AboutToRemoveEdgeViewMicroListener.class, view);
+ eventHelper.addMicroListener(addDeleteHandler,
AboutToRemoveNodeViewMicroListener.class, view);
// Register engine to manager
this.renderingEngineManager.addRenderingEngine(dgv);
Added:
core3/viewmodel-api/trunk/src/main/java/org/cytoscape/view/model/events/AboutToRemoveEdgeViewMicroListener.java
===================================================================
---
core3/viewmodel-api/trunk/src/main/java/org/cytoscape/view/model/events/AboutToRemoveEdgeViewMicroListener.java
(rev 0)
+++
core3/viewmodel-api/trunk/src/main/java/org/cytoscape/view/model/events/AboutToRemoveEdgeViewMicroListener.java
2010-11-22 22:53:05 UTC (rev 22983)
@@ -0,0 +1,13 @@
+package org.cytoscape.view.model.events;
+
+
+import org.cytoscape.event.CyMicroListener;
+import org.cytoscape.model.CyEdge;
+import org.cytoscape.view.model.CyNetworkView;
+import org.cytoscape.view.model.View;
+
+
+/** Micro Listener for edge view destruction. */
+public interface AboutToRemoveEdgeViewMicroListener extends CyMicroListener {
+ void edgeViewAboutToBeRemoved(final View<CyEdge> edgeView, final
CyNetworkView networkView);
+}
Added:
core3/viewmodel-api/trunk/src/main/java/org/cytoscape/view/model/events/AboutToRemoveNodeViewMicroListener.java
===================================================================
---
core3/viewmodel-api/trunk/src/main/java/org/cytoscape/view/model/events/AboutToRemoveNodeViewMicroListener.java
(rev 0)
+++
core3/viewmodel-api/trunk/src/main/java/org/cytoscape/view/model/events/AboutToRemoveNodeViewMicroListener.java
2010-11-22 22:53:05 UTC (rev 22983)
@@ -0,0 +1,13 @@
+package org.cytoscape.view.model.events;
+
+
+import org.cytoscape.event.CyMicroListener;
+import org.cytoscape.model.CyNode;
+import org.cytoscape.view.model.CyNetworkView;
+import org.cytoscape.view.model.View;
+
+
+/** Micro Listener for node view destruction. */
+public interface AboutToRemoveNodeViewMicroListener extends CyMicroListener {
+ void nodeViewAboutToBeRemoved(final View<CyNode> nodeView, final
CyNetworkView networkView);
+}
Modified:
core3/viewmodel-impl/trunk/impl/src/main/java/org/cytoscape/view/model/internal/NetworkViewImpl.java
===================================================================
---
core3/viewmodel-impl/trunk/impl/src/main/java/org/cytoscape/view/model/internal/NetworkViewImpl.java
2010-11-22 21:57:55 UTC (rev 22982)
+++
core3/viewmodel-impl/trunk/impl/src/main/java/org/cytoscape/view/model/internal/NetworkViewImpl.java
2010-11-22 22:53:05 UTC (rev 22983)
@@ -1,5 +1,6 @@
package org.cytoscape.view.model.internal;
+
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
@@ -22,6 +23,8 @@
import org.cytoscape.view.model.CyNetworkView;
import org.cytoscape.view.model.View;
import org.cytoscape.view.model.VisualProperty;
+import org.cytoscape.view.model.events.AboutToRemoveEdgeViewMicroListener;
+import org.cytoscape.view.model.events.AboutToRemoveNodeViewMicroListener;
import org.cytoscape.view.model.events.AddedEdgeViewEvent;
import org.cytoscape.view.model.events.AddedNodeViewEvent;
import org.cytoscape.view.model.events.FitContentEvent;
@@ -31,22 +34,19 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+
/**
* Row-oriented implementation of CyNetworkView model. This is a consolidated
* view model representing a network.
- *
- * @author kono
- *
*/
public class NetworkViewImpl extends ViewImpl<CyNetwork> implements
CyNetworkView, AddedEdgeListener,
- AddedNodeListener, AboutToRemoveEdgeListener,
AboutToRemoveNodeListener {
-
+ AddedNodeListener, AboutToRemoveEdgeListener,
AboutToRemoveNodeListener
+{
private static final Logger logger =
LoggerFactory.getLogger(NetworkViewImpl.class);
private Map<CyNode, View<CyNode>> nodeViews;
private Map<CyEdge, View<CyEdge>> edgeViews;
-
/**
* Create a new instance of a network view model.
* This constructor do NOT fire event for presentation layer.
@@ -109,6 +109,13 @@
if (model != e.getSource())
return;
+ if (!nodeViews.containsKey(e.getNode()))
+ return;
+
+ final AboutToRemoveNodeViewMicroListener listener =
+
cyEventHelper.getMicroListener(AboutToRemoveNodeViewMicroListener.class, this);
+ listener.nodeViewAboutToBeRemoved(nodeViews.get(e.getNode()),
this);
+
nodeViews.remove(e.getNode());
}
@@ -117,6 +124,13 @@
if (model != e.getSource())
return;
+ if (!edgeViews.containsKey(e.getEdge()))
+ return;
+
+ final AboutToRemoveEdgeViewMicroListener listener =
+
cyEventHelper.getMicroListener(AboutToRemoveEdgeViewMicroListener.class, this);
+ listener.edgeViewAboutToBeRemoved(edgeViews.get(e.getEdge()),
this);
+
edgeViews.remove(e.getEdge());
}
--
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.