Class ShapePickSupport<V,E>
- java.lang.Object
-
- edu.uci.ics.jung.visualization.picking.ShapePickSupport<V,E>
-
- All Implemented Interfaces:
GraphElementAccessor<V,E>
- Direct Known Subclasses:
LayoutLensShapePickSupport
,ViewLensShapePickSupport
public class ShapePickSupport<V,E> extends java.lang.Object implements GraphElementAccessor<V,E>
AGraphElementAccessor
that returns elements whoseShape
contains the specified pick point or region.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
ShapePickSupport.Style
The available picking heuristics:Style.CENTERED
: returns the element whose center is closest to the pick point.
-
Field Summary
Fields Modifier and Type Field Description protected float
pickSize
protected ShapePickSupport.Style
style
The current picking heuristic for this instance.protected VisualizationServer<V,E>
vv
TheVisualizationServer
in which the this instance is being used for picking.
-
Constructor Summary
Constructors Constructor Description ShapePickSupport(VisualizationServer<V,E> vv)
Create aShapePickSupport
for the specifiedVisualizationServer
with a default pick footprint.ShapePickSupport(VisualizationServer<V,E> vv, float pickSize)
Creates aShapePickSupport
for thevv
VisualizationServer, with the specified pick footprint and the default pick style.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected boolean
edgesAreFiltered()
Quick test to allow optimization ofgetFilteredEdges()
.E
getEdge(Layout<V,E> layout, double x, double y)
Returns an edge whose shape intersects the 'pickArea' footprint of the passed x,y, coordinates.protected java.util.Collection<E>
getFilteredEdges(Layout<V,E> layout)
protected java.util.Collection<V>
getFilteredVertices(Layout<V,E> layout)
float
getPickSize()
Returns the size of the edge picking area.ShapePickSupport.Style
getStyle()
Returns the style of picking used by this instance.private java.awt.Shape
getTransformedEdgeShape(Layout<V,E> layout, E e)
Retrieves the shape template fore
and transforms it according to the positions of its endpoints inlayout
.V
getVertex(Layout<V,E> layout, double x, double y)
Returns the vertex, if any, whose shape contains (x, y).java.util.Collection<V>
getVertices(Layout<V,E> layout, java.awt.Shape shape)
Returns the vertices whose layout coordinates are contained inShape
.protected boolean
isEdgeRendered(Context<Graph<V,E>,E> context)
Returnstrue
if this edge and its endpoints in this graph are all included in the collections of elements to be rendered, andfalse
otherwise.protected boolean
isVertexRendered(Context<Graph<V,E>,V> context)
Returnstrue
if this vertex in this graph is included in the collections of elements to be rendered, andfalse
otherwise.void
setPickSize(float pickSize)
Sets the size of the edge picking area.void
setStyle(ShapePickSupport.Style style)
Specifies the style of picking to be used by this instance.protected boolean
verticesAreFiltered()
Quick test to allow optimization ofgetFilteredVertices()
.
-
-
-
Field Detail
-
pickSize
protected float pickSize
-
vv
protected VisualizationServer<V,E> vv
TheVisualizationServer
in which the this instance is being used for picking. Used to retrieve properties such as the layout, renderer, vertex and edge shapes, and coordinate transformations.
-
style
protected ShapePickSupport.Style style
The current picking heuristic for this instance. Defaults toCENTERED
.
-
-
Constructor Detail
-
ShapePickSupport
public ShapePickSupport(VisualizationServer<V,E> vv, float pickSize)
Creates aShapePickSupport
for thevv
VisualizationServer, with the specified pick footprint and the default pick style. TheVisualizationServer
is used to access properties of the current visualization (layout, renderer, coordinate transformations, vertex/edge shapes, etc.).- Parameters:
vv
- source of the currentLayout
.pickSize
- the size of the pick footprint for line edges
-
ShapePickSupport
public ShapePickSupport(VisualizationServer<V,E> vv)
Create aShapePickSupport
for the specifiedVisualizationServer
with a default pick footprint. of size 2.- Parameters:
vv
- the visualization server used for rendering
-
-
Method Detail
-
getStyle
public ShapePickSupport.Style getStyle()
Returns the style of picking used by this instance. This specifies which of the elements, among those whose shapes contain the pick point, is returned. The available styles are:Style.CENTERED
: returns the element whose center is closest to the pick point.Style.LOWEST
: returns the first such element encountered. (If the element collection has a consistent ordering, this will also be the element "on the bottom", that is, the one which is rendered first.)Style.HIGHEST
: returns the last such element encountered. (If the element collection has a consistent ordering, this will also be the element "on the top", that is, the one which is rendered last.)
- Returns:
- the style of picking used by this instance
-
setStyle
public void setStyle(ShapePickSupport.Style style)
Specifies the style of picking to be used by this instance. This specifies which of the elements, among those whose shapes contain the pick point, will be returned. The available styles are:Style.CENTERED
: returns the element whose center is closest to the pick point.Style.LOWEST
: returns the first such element encountered. (If the element collection has a consistent ordering, this will also be the element "on the bottom", that is, the one which is rendered first.)Style.HIGHEST
: returns the last such element encountered. (If the element collection has a consistent ordering, this will also be the element "on the top", that is, the one which is rendered last.)
- Parameters:
style
- the style to set
-
getVertex
public V getVertex(Layout<V,E> layout, double x, double y)
Returns the vertex, if any, whose shape contains (x, y). If (x,y) is contained in more than one vertex's shape, returns the vertex whose center is closest to the pick point.- Specified by:
getVertex
in interfaceGraphElementAccessor<V,E>
- Parameters:
layout
- the layout instance that records the positions for all verticesx
- the x coordinate of the pick pointy
- the y coordinate of the pick point- Returns:
- the vertex whose shape contains (x,y), and whose center is closest to the pick point
-
getVertices
public java.util.Collection<V> getVertices(Layout<V,E> layout, java.awt.Shape shape)
Returns the vertices whose layout coordinates are contained inShape
. The shape is in screen coordinates, and the graph vertices are transformed to screen coordinates before they are tested for inclusion.- Specified by:
getVertices
in interfaceGraphElementAccessor<V,E>
- Parameters:
layout
- the layout instance that records the positions for all verticesshape
- the region in which the returned vertices are located- Returns:
- the
Collection
of vertices whoselayout
coordinates are contained inshape
.
-
getEdge
public E getEdge(Layout<V,E> layout, double x, double y)
Returns an edge whose shape intersects the 'pickArea' footprint of the passed x,y, coordinates.- Specified by:
getEdge
in interfaceGraphElementAccessor<V,E>
- Parameters:
layout
- the context in which the location is definedx
- the x coordinate of the locationy
- the y coordinate of the location- Returns:
- an edge whose shape intersects the pick area centered on the location
(x,y)
-
getTransformedEdgeShape
private java.awt.Shape getTransformedEdgeShape(Layout<V,E> layout, E e)
Retrieves the shape template fore
and transforms it according to the positions of its endpoints inlayout
.- Parameters:
layout
- theLayout
which specifiese
's endpoints' positionse
- the edge whose shape is to be returned- Returns:
- the transformed shape
-
verticesAreFiltered
protected boolean verticesAreFiltered()
Quick test to allow optimization ofgetFilteredVertices()
.- Returns:
true
if there is an active vertex filtering mechanism for this visualization,false
otherwise
-
edgesAreFiltered
protected boolean edgesAreFiltered()
Quick test to allow optimization ofgetFilteredEdges()
.- Returns:
true
if there is an active edge filtering mechanism for this visualization,false
otherwise
-
isVertexRendered
protected boolean isVertexRendered(Context<Graph<V,E>,V> context)
Returnstrue
if this vertex in this graph is included in the collections of elements to be rendered, andfalse
otherwise.- Parameters:
context
- the vertex and graph to be queried- Returns:
true
if this vertex is included in the collections of elements to be rendered,false
otherwise.
-
isEdgeRendered
protected boolean isEdgeRendered(Context<Graph<V,E>,E> context)
Returnstrue
if this edge and its endpoints in this graph are all included in the collections of elements to be rendered, andfalse
otherwise.- Parameters:
context
- the edge and graph to be queried- Returns:
true
if this edge and its endpoints are all included in the collections of elements to be rendered,false
otherwise.
-
getPickSize
public float getPickSize()
Returns the size of the edge picking area. The picking area is square; the size is specified as the length of one side, in view coordinates.- Returns:
- the size of the edge picking area
-
setPickSize
public void setPickSize(float pickSize)
Sets the size of the edge picking area.- Parameters:
pickSize
- the length of one side of the (square) picking area, in view coordinates
-
-