Search this API

y.util
Class GraphHider

java.lang.Object
  extended by y.util.GraphHider

public class GraphHider
extends java.lang.Object

Provides functionality to hide and unhide nodes and edges of a graph temporarily for algorithmic operations.

This class can be used to temporarily hide away certain elements of a graph and to unhide that parts at a later time again. Instances of this class keep track of graph elements that were hidden from a graph in order to make them visible again at a later time.

Note that this class should not be used to hide elements from a Graph2D for pure hiding purposes. Since this class will by default prevent the graph instance from firing events, other code might cease to work correctly. Use this class for short term removal of nodes and edges, only.

 

Field Summary
protected  EdgeList hiddenEdges
          holds the list of the hidden edges in stack order
protected  NodeList hiddenNodes
          holds the list of the hidden nodes in stack order
 
Constructor Summary
GraphHider(Graph g)
          Instantiates a new GraphHider for the given graph.
 
Method Summary
 Graph getGraph()
          Returns the Graph for which this GraphHider was created.
 EdgeCursor hiddenEdges()
          The edges that are currently hidden
 NodeCursor hiddenNodes()
          The nodes that are currently hidden
 void hide(Edge e)
          Hides the given edge from the graph.
 void hide(EdgeCursor ec)
          Hides the given edges from the graph.
 void hide(EdgeList el)
          Hides the given list of edges from the graph.
 void hide(Node v)
          Hides the given node and all it's adjacent edges from the graph.
 void hide(NodeCursor nc)
          Hides the given nodes from the graph.
 void hide(NodeList nl)
          Hides the given list of nodes from the graph.
 void hide(YCursor cursor)
          Hides the given elements from the graph.
 void hideAll()
          Hides all nodes and edges from this graph.
 void hideEdges()
          Hides all edges from this graph.
 void hideMultipleEdges()
          Hides multiple edges from the graph.
 void hideSelfLoops()
          Hides all self-loop edges from this graph.
static void hideSubgraph(Graph graph, EdgeCursor ec)
          Hides the subgraph induced by the given edges from the given graph.
 boolean isFireGraphEventsEnabled()
          Returns whether or not this hider should fire graph events.
 void setFireGraphEventsEnabled(boolean fireEvents)
          Specifies whether or not this hider should fire graph events when adding or removing items from the graph.
 void simplifyGraph()
          Hides all self-loops and multiple edges from the graph.
protected  void unhide(Edge e)
          This method will be called whenever the hider is requested to unhide the given edge from the graph.
protected  void unhide(Node v)
          This method will be called whenever the hider is requested to unhide the given node from the graph.
 void unhideAll()
          Unhides all formerly hidden elements in the graph.
 void unhideEdge(Edge e)
          Unhides the given edge.
 void unhideEdges()
          Unhides all formerly hidden edges in the graph.
 void unhideEdges(EdgeList edges)
          Unhides the given edges.
 void unhideNode(Node v, boolean unhideAdjacentEdges)
          Unhides the given node and if requested its adjacent edges.
 void unhideNodes()
          Unhides all formerly hidden nodes in the graph.
 void unhideNodes(NodeList nodes, boolean unhideAdjacentEdges)
          Unhides the given nodes and if requested its adjacent edges.
static void unhideSubgraph(Graph graph, EdgeCursor ec)
          Unhides the subgraph induced by the given edges in the given graph.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

hiddenEdges

protected EdgeList hiddenEdges
holds the list of the hidden edges in stack order


hiddenNodes

protected NodeList hiddenNodes
holds the list of the hidden nodes in stack order

Constructor Detail

GraphHider

public GraphHider(Graph g)
Instantiates a new GraphHider for the given graph. All non-static hiding and unhiding methods will refer to the given graph.

Method Detail

setFireGraphEventsEnabled

public void setFireGraphEventsEnabled(boolean fireEvents)
Specifies whether or not this hider should fire graph events when adding or removing items from the graph. By default the hider does not fire graph events.


isFireGraphEventsEnabled

public boolean isFireGraphEventsEnabled()
Returns whether or not this hider should fire graph events.


hideAll

public void hideAll()
Hides all nodes and edges from this graph. The hidden elements will be stored so that they can be unhidden again at a later time.


hideEdges

public void hideEdges()
Hides all edges from this graph. The hidden edges will be stored so that they can be unhidden again at a later time.


hideSelfLoops

public void hideSelfLoops()
Hides all self-loop edges from this graph. The hidden edges will be stored so that they can be unhidden again at a later time.


simplifyGraph

public void simplifyGraph()
Hides all self-loops and multiple edges from the graph.

The overall effect of this method is that the minimum number of edges are hidden from the graph such that it contains no self-loops and no multiple edges anymore. The hidden edges will be stored so that they can be unhidden again at a later time.


hideMultipleEdges

public void hideMultipleEdges()
Hides multiple edges from the graph. If there are multiple edges connecting two nodes then all but one (representative) of these edges will be hidden. The hidden edges will be stored so that they can be unhidden again at a later time.


unhideAll

public void unhideAll()
Unhides all formerly hidden elements in the graph.


unhideNodes

public void unhideNodes()
Unhides all formerly hidden nodes in the graph. Note that this method does not unhide hidden edges.


unhideEdges

public void unhideEdges()
Unhides all formerly hidden edges in the graph.

Precondition:
Both source or target node of all such edges must be contained in the graph.

hide

public void hide(Node v)
Hides the given node and all it's adjacent edges from the graph. The hidden elements will be stored so that they can be unhidden again at a later time.


hide

public void hide(Edge e)
Hides the given edge from the graph. The hidden edge will be stored so that they can be unhidden again at a later time.


hide

public void hide(EdgeList el)
Hides the given list of edges from the graph. The hidden edges will be stored so that they can be unhidden again at a later time.


hide

public void hide(NodeList nl)
Hides the given list of nodes from the graph. The hidden nodes and adjacent edges will be stored so that they can be unhidden again at a later time.


hide

public void hide(EdgeCursor ec)
Hides the given edges from the graph. The hidden edges will be stored so that they can be unhidden again at a later time.


hide

public void hide(NodeCursor nc)
Hides the given nodes from the graph. The hidden nodes and adjacent edges will be stored so that they can be unhidden again at a later time.


hide

public void hide(YCursor cursor)
Hides the given elements from the graph. The hidden nodes and adjacent edges will be stored so that they can be unhidden again at a later time.


unhideSubgraph

public static void unhideSubgraph(Graph graph,
                                  EdgeCursor ec)
Unhides the subgraph induced by the given edges in the given graph. The induced subgraph defined by the given edges consists of the given edges and all nodes that are either source or target of at least one of the given edges.

Parts of the subgraph that are already contained in the given graph will not be unhidden and pose no problem to this method.


hideSubgraph

public static void hideSubgraph(Graph graph,
                                EdgeCursor ec)
Hides the subgraph induced by the given edges from the given graph. The induced subgraph defined by the given edges consists of the given edges and all nodes that are solely connected to the rest of the graph by the given edges.


getGraph

public Graph getGraph()
Returns the Graph for which this GraphHider was created.

Returns:
the Graph for which this GraphHider was created.

unhide

protected void unhide(Edge e)
This method will be called whenever the hider is requested to unhide the given edge from the graph.


unhideEdge

public void unhideEdge(Edge e)
Unhides the given edge. Also updates hiddenEdges.

Note that unhiding an edge whose source/target is not in the graph (e.g., because it's currently hidden/removed) causes an exception. Hence, in such cases, you first have to unhide/reinsert the corresponding endpoints.

Complexity:
O(hiddenEdges.size())
Parameters:
e - the edge that will be unhidden

unhideEdges

public void unhideEdges(EdgeList edges)
Unhides the given edges. Also updates hiddenEdges.

Note that unhiding an edge whose source/target is not in the graph (e.g., because it's currently hidden/removed) causes an exception. Hence, in such cases, you first have to unhide/reinsert the corresponding endpoints.

Complexity:
O(hiddenEdges.size())
Parameters:
edges - the edges that will be unhidden

unhideNodes

public void unhideNodes(NodeList nodes,
                        boolean unhideAdjacentEdges)
Unhides the given nodes and if requested its adjacent edges. Also updates hiddenNodes and hiddenEdges.

Complexity:
O(hiddenNodes.size()+hiddenEdges.size())
Parameters:
nodes - the nodes that will be unhidden
unhideAdjacentEdges - whether of not to unhide previously hidden edges connected at the given nodes whose other end point is not hidden, i.e. it is part of the graph.

unhideNode

public void unhideNode(Node v,
                       boolean unhideAdjacentEdges)
Unhides the given node and if requested its adjacent edges. Also updates hiddenNodes and hiddenEdges.

Complexity:
O(hiddenNodes.size()+hiddenEdges.size())
Parameters:
v - the node that will be unhidden
unhideAdjacentEdges - whether of not to unhide previously hidden edges connected at v whose other end point is not hidden, i.e. it is part of the graph.

unhide

protected void unhide(Node v)
This method will be called whenever the hider is requested to unhide the given node from the graph.


hiddenNodes

public NodeCursor hiddenNodes()
The nodes that are currently hidden

Returns:
a cursor of the currently hidden nodes

hiddenEdges

public EdgeCursor hiddenEdges()
The edges that are currently hidden

Returns:
a cursor of the currently hidden edges

© Copyright 2000-2022,
yWorks GmbH.
All rights reserved.