|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectedu.uci.ics.jung.visualization.AbstractLayout
edu.uci.ics.jung.visualization.contrib.KKLayoutInt
Implements the Kamada-Kawai algorithm for node layout, tweaked to store vertex distances as integers. Uses less memory than the classic KKLayout, but doesn't respect non-integer edge distances or lengths. Does not respect filter calls, and sometimes crashes when the view changes to it.
Field Summary | |
protected int |
diameter
The diameter of the visible graph. |
protected UnweightedShortestPath |
unweightedShortestPaths
Stores graph distances between vertices of the visible graph |
Fields inherited from class edu.uci.ics.jung.visualization.AbstractLayout |
changeSupport, vertex_locations |
Constructor Summary | |
KKLayoutInt(Graph g)
|
Method Summary | |
void |
adjustForGravity()
Shift all vertices so that the center of gravity is located at the center of the screen. |
void |
advancePositions()
Implementors must override this method in order to create a Layout. |
boolean |
getAdjustForGravity()
Returns true if gravity point adjusting is enabled. |
protected int |
getDistance(Vertex v1,
Vertex v2)
Gets a distance (a length of the shortest path) between the specified vertices. |
boolean |
getExchangeVertices()
Returns true if the local minimum escape technique by exchanging vertices is enabled. |
String |
getStatus()
Returns the current status of the sytem, or null if there is no particular status to report. Useful for reporting things like number of iterations passed, temperature, and so on.By default, an AbstractLayout returns null for its status.By default, an AbstractLayout returns null for its status. |
boolean |
incrementsAreDone()
Returns true once the current iteration has passed the maximum count. |
protected void |
initialize_local_vertex(Vertex v)
Initializes the local information on a single vertex. |
protected void |
initialize_local()
Initializes all local information, and is called immediately within the initialize() process. |
protected void |
initializeLocations()
This method calls initialize_local_vertex for each vertex, and also adds initial coordinate information for each vertex. |
boolean |
isIncremental()
This one is an incremental visualization. |
void |
setAdjustForGravity(boolean on)
Enable or disable gravity point adjusting. |
void |
setExchangeVertices(boolean on)
Enable or disable the local minimum escape technique by exchanging vertices. |
void |
setMaxIterations(int maxIterations)
|
Methods inherited from class edu.uci.ics.jung.visualization.AbstractLayout |
addChangeListener, applyFilter, dontMove, fireStateChanged, forceMove, getAVertex, getBaseKey, getChangeListeners, getCoordinates, getCurrentSize, getEdge, getEdge, getGraph, getLocation, getVertex, getVertex, getVertexIterator, getVisibleEdges, getVisibleGraph, getVisibleVertices, getX, getY, initialize, initialize, initializeLocation, isLocked, lockVertex, offsetVertex, postInitialize, removeChangeListener, resize, restart, unlockVertex |
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
protected UnweightedShortestPath unweightedShortestPaths
protected int diameter
Constructor Detail |
public KKLayoutInt(Graph g)
Method Detail |
public String getStatus()
AbstractLayout
getStatus
in interface Layout
getStatus
in class AbstractLayout
public void setMaxIterations(int maxIterations)
public boolean isIncremental()
public boolean incrementsAreDone()
protected void initialize_local()
AbstractLayout
initialize_local
in class AbstractLayout
protected void initializeLocations()
AbstractLayout
initializeLocations
in class AbstractLayout
protected int getDistance(Vertex v1, Vertex v2)
The original Kamada-Kawai algorithm requires a connected graph. That is, pathes must be exist between every pair of vertices in the graph. To visualize a non-connected graph, this method returns (diameter + 1) for vertices that are not connected.
The default implementation is as follows:
int dist = unweightedShortestPaths.getShortestPath(v1, v2); if (dist < 0) return diameter + 1; else return dist;
protected void initialize_local_vertex(Vertex v)
AbstractLayout
initialize_local_vertex
in class AbstractLayout
public void advancePositions()
AbstractLayout
Note that "locked" vertices are not to be moved; however, it is the policy of the visualization to decide how to handle them, and what to do with the vertices around them. Prototypical code might include a clipping like
for (Iterator i = getVertices().iterator(); i.hasNext() ) { Vertex v = (Vertex) i.next(); if (! dontmove.contains( v ) ) { ... // handle the node } else { // ignore the node } }
advancePositions
in interface Layout
advancePositions
in class AbstractLayout
Layout.advancePositions()
public void adjustForGravity()
public void setAdjustForGravity(boolean on)
public boolean getAdjustForGravity()
public void setExchangeVertices(boolean on)
public boolean getExchangeVertices()
|
|||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |