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.

Reply via email to