Class DefaultVisualGraph<V extends VisualVertex,E extends VisualEdge<V>>
- java.lang.Object
-
- edu.uci.ics.jung.graph.AbstractGraph<V,E>
-
- edu.uci.ics.jung.graph.AbstractTypedGraph<V,E>
-
- edu.uci.ics.jung.graph.DirectedSparseGraph<V,E>
-
- ghidra.graph.jung.JungDirectedGraph<V,E>
-
- ghidra.graph.graphs.JungDirectedVisualGraph<V,E>
-
- ghidra.graph.graphs.DefaultVisualGraph<V,E>
-
- Type Parameters:
V
- the vertex typeE
- the edge type
- All Implemented Interfaces:
edu.uci.ics.jung.graph.DirectedGraph<V,E>
,edu.uci.ics.jung.graph.Graph<V,E>
,edu.uci.ics.jung.graph.Hypergraph<V,E>
,GDirectedGraph<V,E>
,GImplicitDirectedGraph<V,E>
,VisualGraph<V,E>
,java.io.Serializable
- Direct Known Subclasses:
FilteringVisualGraph
,GroupingVisualGraph
public abstract class DefaultVisualGraph<V extends VisualVertex,E extends VisualEdge<V>> extends JungDirectedVisualGraph<V,E>
A defaultVisualGraph
that implements basic setup for things like event processing.Notes:
- Selected Vertices and the Focused Vertex -
there can be multiple selected vertices, but only a single focused vertex.
getSelectedVertices()
will return both the selected vertices or the focused vertex if there are no vertices selected. - Clicking a single vertex will focus it. Control-clicking multiple vertices will cause them all to be selected, with no focused vertex.
- Rendering Edges - edges are rendered with or without articulations if they have them. This is built-in to the default graphing edge renderer. Some layouts require custom edge rendering and will provide their own renderer as needed.
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected V
focusedVertex
-
Constructor Summary
Constructors Constructor Description DefaultVisualGraph()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description boolean
addEdge(E edge, edu.uci.ics.jung.graph.util.Pair<? extends V> endpoints, edu.uci.ics.jung.graph.util.EdgeType edgeType)
void
addGraphChangeListener(VisualGraphChangeListener<V,E> l)
Adds the given listener to this graphboolean
addVertex(V v)
Add a vertexvoid
clearSelectedVertices()
Clears any selected vertices as well as the focused vertexabstract DefaultVisualGraph<V,E>
copy()
Copy this graph.void
dispose()
protected void
fireEdgesAdded(java.lang.Iterable<E> added)
protected void
fireEdgesRemoved(java.lang.Iterable<E> removed)
protected void
fireVerticesAdded(java.util.Collection<V> added)
protected void
fireVerticesRemoved(java.util.Collection<V> removed)
java.lang.Iterable<E>
getAllEdges(V v)
A convenience method to combine retrieval of in and out edges for the given vertexjava.lang.Iterable<E>
getEdges(V start, V end)
Returns all edges shared between the two given verticesV
getFocusedVertex()
Returns the focused vertex; null if no vertex has focus.java.util.Set<V>
getSelectedVertices()
Returns the selected vertices.protected void
initializeLocation(V v)
boolean
removeEdge(E edge)
Removes an edgevoid
removeGraphChangeListener(VisualGraphChangeListener<V,E> l)
Removes the given listener from this graphboolean
removeVertex(V v)
Remove a vertexvoid
removeVertices(java.lang.Iterable<V> toRemove)
Removes the given vertices from the graphvoid
setSelectedVertices(java.util.Set<V> selectedVertices)
Selects the given verticesvoid
setVertexFocused(V vertex, boolean focused)
Sets the given vertex to be focused or notvoid
vertexLocationChanged(V v, java.awt.Point point, LayoutListener.ChangeType type)
A callback notifying this graph that the given vertex's location has changedprotected void
verticesAdded(java.util.Collection<V> added)
Called after one or more vertices have been added.protected void
verticesRemoved(java.util.Collection<V> removed)
Called after one or more vertices have been removed.-
Methods inherited from class ghidra.graph.jung.JungDirectedGraph
addEdge, containsEdge, emptyCopy, isEmpty, removeEdges
-
Methods inherited from class edu.uci.ics.jung.graph.DirectedSparseGraph
containsEdge, containsVertex, findEdge, findEdgeSet, getDest, getEdgeCount, getEdges, getEndpoints, getFactory, getIncidentEdges, getIncoming_internal, getInEdges, getNeighbors, getOutEdges, getOutgoing_internal, getPredecessors, getPreds_internal, getSource, getSuccessors, getSuccs_internal, getVertexCount, getVertices, isDest, isSource
-
Methods inherited from class edu.uci.ics.jung.graph.AbstractTypedGraph
getDefaultEdgeType, getEdgeCount, getEdges, getEdgeType, hasEqualEdgeType, validateEdgeType
-
Methods inherited from class edu.uci.ics.jung.graph.AbstractGraph
addEdge, addEdge, addEdge, addEdge, addEdge, degree, getIncidentCount, getIncidentVertices, getNeighborCount, getOpposite, getPredecessorCount, getSuccessorCount, getValidatedEndpoints, inDegree, isIncident, isNeighbor, isPredecessor, isSuccessor, outDegree, toString
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface ghidra.graph.GDirectedGraph
addEdge, containsEdge, containsEdge, containsVertex, emptyCopy, findEdge, getEdgeCount, getEdges, getIncidentEdges, getInEdges, getOutEdges, getPredecessors, getSuccessors, getVertexCount, getVertices, isEmpty, removeEdges
-
Methods inherited from interface edu.uci.ics.jung.graph.Graph
addEdge, addEdge, getOpposite, getPredecessorCount, getSuccessorCount, inDegree, isPredecessor, isSuccessor, outDegree
-
Methods inherited from interface edu.uci.ics.jung.graph.Hypergraph
addEdge, addEdge, degree, getDefaultEdgeType, getEdgeCount, getEdges, getEdgeType, getIncidentCount, getIncidentVertices, getNeighborCount, isIncident, isNeighbor
-
Methods inherited from interface ghidra.graph.VisualGraph
getLayout
-
-
-
-
Field Detail
-
focusedVertex
protected V extends VisualVertex focusedVertex
-
-
Method Detail
-
copy
public abstract DefaultVisualGraph<V,E> copy()
Description copied from interface:GDirectedGraph
Copy this graph.Note: the vertices and edges in the copy may be the same instances in the new graph and not themselves copies.
- Specified by:
copy
in interfaceGDirectedGraph<V extends VisualVertex,E extends VisualEdge<V>>
- Specified by:
copy
in interfaceGImplicitDirectedGraph<V extends VisualVertex,E extends VisualEdge<V>>
- Specified by:
copy
in interfaceVisualGraph<V extends VisualVertex,E extends VisualEdge<V>>
- Specified by:
copy
in classJungDirectedVisualGraph<V extends VisualVertex,E extends VisualEdge<V>>
- Returns:
- the new copy
-
setSelectedVertices
public void setSelectedVertices(java.util.Set<V> selectedVertices)
Description copied from interface:VisualGraph
Selects the given verticesNote: this method is called by other APIs to ensure that the graph's notion of the focused vertex matches what is happening externally (e.g., from the user clicking the screen). If you wish to programmatically select a vertex, then you should not be calling this API directly, but you should instead be using the
GPickedState
or one of the APIs that uses that, such as theGraphComponent
.- Parameters:
selectedVertices
- the vertices
-
setVertexFocused
public void setVertexFocused(V vertex, boolean focused)
Description copied from interface:VisualGraph
Sets the given vertex to be focused or notNote: this method is called by other APIs to ensure that the graph's notion of the focused vertex matches what is happening externally (e.g., from the user clicking the screen). If you wish to programmatically focus a vertex, then you should not be calling this API directly, but you should instead be using the
GPickedState
or one of the APIs that uses that, such as theGraphComponent
.- Parameters:
vertex
- the focused vertexfocused
- true for focused; false for not focused
-
getFocusedVertex
public V getFocusedVertex()
Description copied from interface:VisualGraph
Returns the focused vertex; null if no vertex has focus. Focus is equivalent to being selected, but further distinguishes the vertex as being the only selected vertex. This is useful for key event processing.- Returns:
- the focused vertex
-
clearSelectedVertices
public void clearSelectedVertices()
Description copied from interface:VisualGraph
Clears any selected vertices as well as the focused vertex
-
getSelectedVertices
public java.util.Set<V> getSelectedVertices()
Description copied from interface:VisualGraph
Returns the selected vertices.- Returns:
- the selected vertices
-
vertexLocationChanged
public void vertexLocationChanged(V v, java.awt.Point point, LayoutListener.ChangeType type)
Description copied from interface:VisualGraph
A callback notifying this graph that the given vertex's location has changed- Parameters:
v
- the vertexpoint
- the new locationtype
- the type of change
-
dispose
public void dispose()
-
initializeLocation
protected void initializeLocation(V v)
-
getAllEdges
public java.lang.Iterable<E> getAllEdges(V v)
A convenience method to combine retrieval of in and out edges for the given vertex- Parameters:
v
- the vertex- Returns:
- the edges
-
getEdges
public java.lang.Iterable<E> getEdges(V start, V end)
Returns all edges shared between the two given vertices- Parameters:
start
- the start vertexend
- the end vertex- Returns:
- the edges
-
addVertex
public boolean addVertex(V v)
Description copied from interface:GDirectedGraph
Add a vertex- Specified by:
addVertex
in interfaceGDirectedGraph<V extends VisualVertex,E extends VisualEdge<V>>
- Specified by:
addVertex
in interfaceedu.uci.ics.jung.graph.Hypergraph<V extends VisualVertex,E extends VisualEdge<V>>
- Overrides:
addVertex
in classedu.uci.ics.jung.graph.DirectedSparseGraph<V extends VisualVertex,E extends VisualEdge<V>>
- Parameters:
v
- the vertex- Returns:
- true if the add was successful, false otherwise
-
addEdge
public boolean addEdge(E edge, edu.uci.ics.jung.graph.util.Pair<? extends V> endpoints, edu.uci.ics.jung.graph.util.EdgeType edgeType)
- Overrides:
addEdge
in classedu.uci.ics.jung.graph.DirectedSparseGraph<V extends VisualVertex,E extends VisualEdge<V>>
-
removeVertex
public boolean removeVertex(V v)
Description copied from interface:GDirectedGraph
Remove a vertex- Specified by:
removeVertex
in interfaceGDirectedGraph<V extends VisualVertex,E extends VisualEdge<V>>
- Specified by:
removeVertex
in interfaceedu.uci.ics.jung.graph.Hypergraph<V extends VisualVertex,E extends VisualEdge<V>>
- Overrides:
removeVertex
in classedu.uci.ics.jung.graph.DirectedSparseGraph<V extends VisualVertex,E extends VisualEdge<V>>
- Parameters:
v
- the vertex- Returns:
- true
-
removeVertices
public void removeVertices(java.lang.Iterable<V> toRemove)
Description copied from interface:GDirectedGraph
Removes the given vertices from the graph- Specified by:
removeVertices
in interfaceGDirectedGraph<V extends VisualVertex,E extends VisualEdge<V>>
- Overrides:
removeVertices
in classJungDirectedGraph<V extends VisualVertex,E extends VisualEdge<V>>
- Parameters:
toRemove
- the vertices to remove
-
removeEdge
public boolean removeEdge(E edge)
Description copied from interface:GDirectedGraph
Removes an edge- Specified by:
removeEdge
in interfaceGDirectedGraph<V extends VisualVertex,E extends VisualEdge<V>>
- Specified by:
removeEdge
in interfaceedu.uci.ics.jung.graph.Hypergraph<V extends VisualVertex,E extends VisualEdge<V>>
- Overrides:
removeEdge
in classedu.uci.ics.jung.graph.DirectedSparseGraph<V extends VisualVertex,E extends VisualEdge<V>>
- Parameters:
edge
- the edge- Returns:
- true if the graph contained the given edge
-
verticesAdded
protected void verticesAdded(java.util.Collection<V> added)
Called after one or more vertices have been added. The callback will happen after all additions have taken place. This is an extension point for subclasses.- Parameters:
added
- the added vertices
-
verticesRemoved
protected void verticesRemoved(java.util.Collection<V> removed)
Called after one or more vertices have been removed. The callback will happen after all removals have taken place. This is an extension point for subclasses.- Parameters:
removed
- the removed vertices
-
fireVerticesRemoved
protected void fireVerticesRemoved(java.util.Collection<V> removed)
-
fireVerticesAdded
protected void fireVerticesAdded(java.util.Collection<V> added)
-
fireEdgesRemoved
protected void fireEdgesRemoved(java.lang.Iterable<E> removed)
-
fireEdgesAdded
protected void fireEdgesAdded(java.lang.Iterable<E> added)
-
addGraphChangeListener
public void addGraphChangeListener(VisualGraphChangeListener<V,E> l)
Description copied from interface:VisualGraph
Adds the given listener to this graph- Parameters:
l
- the listener
-
removeGraphChangeListener
public void removeGraphChangeListener(VisualGraphChangeListener<V,E> l)
Description copied from interface:VisualGraph
Removes the given listener from this graph- Parameters:
l
- the listener
-
-