public class mxGraphHierarchyModel extends Object
Modifier and Type | Class and Description |
---|---|
static interface |
mxGraphHierarchyModel.CellVisitor
Defines the interface that visitors use to perform operations upon the
graph information during depth first search (dfs) or other tree-traversal
strategies implemented by subclassers.
|
Modifier and Type | Field and Description |
---|---|
protected int |
dfsCount
Count of the number of times the ancestor dfs has been used
|
protected Map<Object,mxGraphHierarchyEdge> |
edgeMapper
Map from graph edges to internal model edges
|
int |
maxRank
Stores the largest rank number allocated
|
Object |
parent
The parent cell whose children are being laid out
|
Map<Integer,mxGraphHierarchyRank> |
ranks
Mapping from rank number to actual rank
|
List<Object> |
roots
Store of roots of this hierarchy model, these are real graph cells, not
internal cells
|
protected Map<Object,mxGraphHierarchyNode> |
vertexMapper
Map from graph vertices to internal model nodes
|
Constructor and Description |
---|
mxGraphHierarchyModel(mxHierarchicalLayout layout,
Object[] vertices,
List<Object> roots,
Object parent)
Creates an internal ordered graph model using the vertices passed in.
|
Modifier and Type | Method and Description |
---|---|
protected void |
createInternalCells(mxHierarchicalLayout layout,
Object[] vertices,
mxGraphHierarchyNode[] internalVertices)
Creates all edges in the internal model
|
void |
dfs(mxGraphHierarchyNode parent,
mxGraphHierarchyNode root,
mxGraphHierarchyEdge connectingEdge,
mxGraphHierarchyModel.CellVisitor visitor,
Set<mxGraphHierarchyNode> seen,
int layer)
Performs a depth first search on the internal hierarchy model
|
void |
dfs(mxGraphHierarchyNode parent,
mxGraphHierarchyNode root,
mxGraphHierarchyEdge connectingEdge,
mxGraphHierarchyModel.CellVisitor visitor,
Set<mxGraphHierarchyNode> seen,
int[] ancestors,
int childHash,
int layer)
Performs a depth first search on the internal hierarchy model.
|
void |
fixRanks()
Fixes the layer assignments to the values stored in the nodes.
|
int |
getDfsCount() |
Map<Object,mxGraphHierarchyEdge> |
getEdgeMapper() |
Map<Object,mxGraphHierarchyNode> |
getVertexMapper() |
void |
initialRank()
Basic determination of minimum layer ranking by working from from sources
or sinks and working through each node in the relevant edge direction.
|
void |
setDfsCount(int dfsCount) |
void |
setEdgeMapper(Map<Object,mxGraphHierarchyEdge> edgeMapper) |
void |
setVertexMapper(Map<Object,mxGraphHierarchyNode> vertexMapping) |
void |
visit(mxGraphHierarchyModel.CellVisitor visitor,
mxGraphHierarchyNode[] dfsRoots,
boolean trackAncestors,
Set<mxGraphHierarchyNode> seenNodes)
A depth first search through the internal hierarchy model
|
public int maxRank
protected Map<Object,mxGraphHierarchyNode> vertexMapper
protected Map<Object,mxGraphHierarchyEdge> edgeMapper
public Map<Integer,mxGraphHierarchyRank> ranks
public List<Object> roots
public Object parent
protected int dfsCount
public mxGraphHierarchyModel(mxHierarchicalLayout layout, Object[] vertices, List<Object> roots, Object parent)
layout
- the enclosing layout objectvertices
- the vertices for this hierarchyprotected void createInternalCells(mxHierarchicalLayout layout, Object[] vertices, mxGraphHierarchyNode[] internalVertices)
layout
- reference to the layout algorithmvertices
- the vertices whom are to have an internal representation
createdinternalVertices
- the blank internal vertices to have their information filled
in using the real verticespublic void initialRank()
public void fixRanks()
public void visit(mxGraphHierarchyModel.CellVisitor visitor, mxGraphHierarchyNode[] dfsRoots, boolean trackAncestors, Set<mxGraphHierarchyNode> seenNodes)
visitor
- the visitor pattern to be called for each nodetrackAncestors
- whether or not the search is to keep track all nodes directly
above this one in the search pathpublic void dfs(mxGraphHierarchyNode parent, mxGraphHierarchyNode root, mxGraphHierarchyEdge connectingEdge, mxGraphHierarchyModel.CellVisitor visitor, Set<mxGraphHierarchyNode> seen, int layer)
parent
- the parent internal node of the current internal noderoot
- the current internal nodeconnectingEdge
- the internal edge connecting the internal node and the parent
internal node, if anyvisitor
- the visitor pattern to be called for each nodeseen
- a set of all nodes seen by this dfs a set of all of the
ancestor node of the current nodelayer
- the layer on the dfs tree ( not the same as the model ranks )public void dfs(mxGraphHierarchyNode parent, mxGraphHierarchyNode root, mxGraphHierarchyEdge connectingEdge, mxGraphHierarchyModel.CellVisitor visitor, Set<mxGraphHierarchyNode> seen, int[] ancestors, int childHash, int layer)
parent
- the parent internal node of the current internal noderoot
- the current internal nodeconnectingEdge
- the internal edge connecting the internal node and the parent
internal node, if anyvisitor
- the visitor pattern to be called for each nodeseen
- a set of all nodes seen by this dfsancestors
- the parent hash codechildHash
- the new hash code for this nodelayer
- the layer on the dfs tree ( not the same as the model ranks )public Map<Object,mxGraphHierarchyNode> getVertexMapper()
public void setVertexMapper(Map<Object,mxGraphHierarchyNode> vertexMapping)
vertexMapping
- The vertexMapping to set.public Map<Object,mxGraphHierarchyEdge> getEdgeMapper()
public void setEdgeMapper(Map<Object,mxGraphHierarchyEdge> edgeMapper)
edgeMapper
- The edgeMapper to set.public int getDfsCount()
public void setDfsCount(int dfsCount)
dfsCount
- The dfsCount to set.Copyright (c) 2010-2017 Gaudenz Alder, JGraph Ltd. All rights reserved.