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.