Author: mes
Date: 2009-12-14 11:52:04 -0800 (Mon, 14 Dec 2009)
New Revision: 18751

Modified:
   cytoscape/trunk/src/cytoscape/actions/GinyUtils.java
Log:
Removed the hidden node/edge kludge after fixing the actual cause in ding by 
properly setting and getting node position when views are hidden.

Modified: cytoscape/trunk/src/cytoscape/actions/GinyUtils.java
===================================================================
--- cytoscape/trunk/src/cytoscape/actions/GinyUtils.java        2009-12-14 
19:50:17 UTC (rev 18750)
+++ cytoscape/trunk/src/cytoscape/actions/GinyUtils.java        2009-12-14 
19:52:04 UTC (rev 18751)
@@ -50,131 +50,13 @@
 
 import java.util.*;
 
-import cytoscape.Cytoscape;
-import cytoscape.view.CyNetworkView;
-import java.beans.PropertyChangeListener;
-import java.beans.PropertyChangeEvent;
 
 /**
  * Utility operations for selection and hiding/unhiding nodes and edges
- * in a Giny GraphView.
- *
- * Only those nodes and edges that were hidden using this class
- * will be unhidden when using the <code>unHide*</code> methods.
- *
- * Because the Giny API does not provide any means to determine
- * if a NodeView or an EdgeView is visible or not, we must
- * internally store all hidden nodes and edges.
- *
- * This class uses <code>GraphPerspective</code>'s
- * <code>hide*</code> * and <code>restore*</code> methods to hide
- * and unhide nodes and edges.
+ * in a Giny GraphView. Most operations are self-explanatory.
  */
 public class GinyUtils {
-
        /**
-        * Contains necessary details of a node such that when it becomes
-        * unhidden, it is possible to place it correctly as it was in a
-        * GraphView.
-        */
-       static class HiddenNode
-       {
-               /**
-                * The root graph index.
-                */
-               public int index;
-
-               /**
-                * The X coordinate of the node before it was hidden.
-                */
-               public double x;
-
-               /**
-                * The Y coordinate of the node before it was hidden.
-                */
-               public double y;
-
-               public HiddenNode(NodeView nview)
-               {
-                       this.index = nview.getNode().getRootGraphIndex();
-                       this.x = nview.getXPosition();
-                       this.y = nview.getYPosition();
-               }
-       }
-
-       /**
-        * Ensures that when a graph is destroyed,
-        * it is removed from <code>hiddenNodesMap</code> and
-        * <code>hiddenEdgesMap</code>.
-        */
-       static class GraphDestroyedListener implements PropertyChangeListener
-       {
-               public void propertyChange(PropertyChangeEvent event)
-               {
-                       GraphPerspective graph = Cytoscape.getNetwork((String) 
event.getNewValue());
-                       if (!hiddenNodesMap.containsKey(graph))
-                               return;
-                       hiddenNodesMap.remove(graph);
-                       hiddenEdgesMap.remove(graph);
-               }
-       }
-
-       /**
-        * Stores all information for hidden nodes.
-        * All relevant details of a hidden node is
-        * stored using <code>HiddenNode</code> objects.
-        *
-        * Using a map is necessary because once a node
-        * is hidden, one cannot determine what GraphPerspective
-        * the node belongs to.
-        */
-       static Map<GraphPerspective, Set<HiddenNode>> hiddenNodesMap = new 
HashMap<GraphPerspective, Set<HiddenNode>>();
-
-       /**
-        * Stores root graph indices of hidden edges.
-        *
-        * Using a map is necessary because once an edge
-        * is hidden, one cannot determine what GraphPerspective
-        * the edge belongs to.
-        */
-       static Map<GraphPerspective, Set<Integer>> hiddenEdgesMap = new 
HashMap<GraphPerspective, Set<Integer>>();
-
-       static GraphDestroyedListener graphDestroyedListener = null;
-
-       /**
-        * Ensures that <code>graph</code> is a valid key in
-        * <code>hiddenNodesMap</code> and <code>hiddenEdgesMap</code>.
-        */
-       private static void ensureGraph(GraphPerspective graph)
-       {
-               if (hiddenNodesMap.containsKey(graph))
-                       return;
-               hiddenNodesMap.put(graph, new HashSet<HiddenNode>());
-               hiddenEdgesMap.put(graph, new HashSet<Integer>());
-
-               ensureGraphDestroyedListener();
-       }
-
-       /**
-        * Ensures that <code>graphDestroyedListener</code> is
-        * constructed and listening to events.
-        *
-        * Because it may be the case that <code>GinyUtils</code>
-        * <code>hide*</code> methods
-        * may never be used, we initialize and register
-        * <code>graphDestroyedListener</code> only when
-        * we actually do hide a node or an edge.
-        */
-       private static void ensureGraphDestroyedListener()
-       {
-               if (graphDestroyedListener != null)
-                       return;
-
-               graphDestroyedListener = new GraphDestroyedListener();
-               
Cytoscape.getPropertyChangeSupport().addPropertyChangeListener(Cytoscape.NETWORK_DESTROYED,
 graphDestroyedListener);
-       }
-
-       /**
         *  DOCUMENT ME!
         *
         * @param view DOCUMENT ME!
@@ -185,24 +67,9 @@
                        return;
                }
 
-               GraphPerspective graph = view.getGraphPerspective();
-               ensureGraph(graph);
-               Set<HiddenNode> hiddenNodes = hiddenNodesMap.get(graph);
-               Set<Integer> hiddenEdges = hiddenEdgesMap.get(graph);
-
                for (Iterator i = view.getSelectedNodes().iterator(); 
i.hasNext();) {
                        NodeView nview = (NodeView) i.next();
-                       HiddenNode hiddenNode = new HiddenNode(nview);
-                       hiddenNodes.add(hiddenNode);
-
-                       // Hide all adjacent edges as well
-                       int[] edges = 
graph.getAdjacentEdgeIndicesArray(hiddenNode.index, true, true, true);
-                       for (int edgeIndex = 0; edgeIndex < edges.length; 
edgeIndex++)
-                       {
-                               hiddenEdges.add(edges[edgeIndex]);
-                               graph.hideEdge(edges[edgeIndex]);
-                       }
-                       graph.hideNode(hiddenNode.index);
+                       view.hideGraphObject(nview);
                }
 
                view.updateView();
@@ -248,43 +115,15 @@
                        return;
                }
 
-               GraphPerspective graph = view.getGraphPerspective();
-               Set<HiddenNode> hiddenNodes = hiddenNodesMap.get(graph);
-               if (hiddenNodes == null)
-                       return;
-
-               for (HiddenNode hiddenNode : hiddenNodes)
-               {
-                       graph.restoreNode(hiddenNode.index);
-                       NodeView nodeView = view.getNodeView(hiddenNode.index);
-                       if (nodeView == null)
-                               nodeView = view.addNodeView(hiddenNode.index);
-
-                       // When we restore a node, Fing does not automatically
-                       // apply the visual style; we have to do it ourselves.
-                       if (view instanceof cytoscape.view.CyNetworkView)
-                               ((cytoscape.view.CyNetworkView) 
view).applyVizMap(nodeView);
-
-                       // Reposition the node correctly
-                       nodeView.setXPosition(hiddenNode.x);
-                       nodeView.setYPosition(hiddenNode.y);
+               for (Iterator i = view.getNodeViewsIterator(); i.hasNext();) {
+                       NodeView nview = (NodeView) i.next();
+                       view.showGraphObject(nview);
                }
-               hiddenNodes.clear();
 
-               Set<Integer> hiddenEdges = hiddenEdgesMap.get(graph);
-               for (Integer hiddenEdge : hiddenEdges)
-               {
-                       graph.restoreEdge(hiddenEdge);
-                       EdgeView edgeView = view.getEdgeView(hiddenEdge);
-                       if (edgeView == null)
-                               edgeView = view.addEdgeView(hiddenEdge);
-
-                       // When we restore an edge, Fing does not automatically
-                       // apply the visual style; we have to do it ourselves.
-                       if (view instanceof cytoscape.view.CyNetworkView)
-                               ((cytoscape.view.CyNetworkView) 
view).applyVizMap(edgeView);
+               for (Iterator ei = view.getEdgeViewsList().iterator(); 
ei.hasNext();) {
+                       EdgeView eview = (EdgeView) ei.next();
+                       view.showGraphObject(eview);
                }
-               hiddenEdges.clear();
 
                view.updateView();
        }
@@ -333,14 +172,9 @@
                        return;
                }
 
-               GraphPerspective graph = view.getGraphPerspective();
-               ensureGraph(graph);
-               Set<Integer> hiddenEdges = hiddenEdgesMap.get(graph);
-
                for (Iterator i = view.getSelectedEdges().iterator(); 
i.hasNext();) {
                        EdgeView eview = (EdgeView) i.next();
-                       hiddenEdges.add(eview.getEdge().getRootGraphIndex());
-                       graph.hideEdge(eview.getEdge());
+                       view.hideGraphObject(eview);
                }
 
                view.updateView();
@@ -514,14 +348,9 @@
                        return;
                }
 
-               GraphPerspective graph = view.getGraphPerspective();
-               ensureGraph(graph);
-               Set<Integer> hiddenEdges = hiddenEdgesMap.get(graph);
-
                for (Iterator i = view.getEdgeViewsList().iterator(); 
i.hasNext();) {
                        EdgeView eview = (EdgeView) i.next();
-                       hiddenEdges.add(eview.getEdge().getRootGraphIndex());
-                       graph.hideEdge(eview.getEdge());
+                       view.hideGraphObject(eview);
                }
 
                view.updateView();
@@ -537,26 +366,11 @@
                        return;
                }
 
-               GraphPerspective graph = view.getGraphPerspective();
-               Set<Integer> hiddenEdges = hiddenEdgesMap.get(graph);
-               if (hiddenEdges == null)
-                       return;
-
-               for (Integer hiddenEdge : hiddenEdges)
-               {
-                       graph.restoreEdge(hiddenEdge);
-                       EdgeView edgeView = view.getEdgeView(hiddenEdge);
-                       if (edgeView == null)
-                               edgeView = view.addEdgeView(hiddenEdge);
-
-                       // When we restore an edge, Fing does not automatically
-                       // apply the visual style; we have to do it ourselves.
-                       if (view instanceof cytoscape.view.CyNetworkView)
-                               ((cytoscape.view.CyNetworkView) 
view).applyVizMap(edgeView);
+               for (Iterator i = view.getEdgeViewsList().iterator(); 
i.hasNext();) {
+                       EdgeView eview = (EdgeView) i.next();
+                       view.showGraphObject(eview);
                }
-               hiddenEdges.clear();
 
                view.updateView();
        }
-
 }

--

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