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 Object implements GraphElementAccessor<V,E>
A GraphElementAccessor that returns elements whose Shape contains the specified pick point or region.
  • Field Details

    • pickSize

      protected float pickSize
    • vv

      protected VisualizationServer<V,E> vv
      The VisualizationServer 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 to CENTERED.
  • Constructor Details

    • ShapePickSupport

      public ShapePickSupport(VisualizationServer<V,E> vv, float pickSize)
      Creates a ShapePickSupport for the vv VisualizationServer, with the specified pick footprint and the default pick style. The VisualizationServer is used to access properties of the current visualization (layout, renderer, coordinate transformations, vertex/edge shapes, etc.).
      Parameters:
      vv - source of the current Layout.
      pickSize - the size of the pick footprint for line edges
    • ShapePickSupport

      public ShapePickSupport(VisualizationServer<V,E> vv)
      Create a ShapePickSupport for the specified VisualizationServer with a default pick footprint. of size 2.
      Parameters:
      vv - the visualization server used for rendering
  • Method Details

    • 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 interface GraphElementAccessor<V,E>
      Parameters:
      layout - the layout instance that records the positions for all vertices
      x - the x coordinate of the pick point
      y - 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 Collection<V> getVertices(Layout<V,E> layout, Shape shape)
      Returns the vertices whose layout coordinates are contained in Shape. 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 interface GraphElementAccessor<V,E>
      Parameters:
      layout - the layout instance that records the positions for all vertices
      shape - the region in which the returned vertices are located
      Returns:
      the Collection of vertices whose layout coordinates are contained in shape.
    • 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 interface GraphElementAccessor<V,E>
      Parameters:
      layout - the context in which the location is defined
      x - the x coordinate of the location
      y - the y coordinate of the location
      Returns:
      an edge whose shape intersects the pick area centered on the location (x,y)
    • getTransformedEdgeShape

      private Shape getTransformedEdgeShape(Layout<V,E> layout, E e)
      Retrieves the shape template for e and transforms it according to the positions of its endpoints in layout.
      Parameters:
      layout - the Layout which specifies e's endpoints' positions
      e - the edge whose shape is to be returned
      Returns:
      the transformed shape
    • getFilteredVertices

      protected Collection<V> getFilteredVertices(Layout<V,E> layout)
    • getFilteredEdges

      protected Collection<E> getFilteredEdges(Layout<V,E> layout)
    • verticesAreFiltered

      protected boolean verticesAreFiltered()
      Quick test to allow optimization of getFilteredVertices().
      Returns:
      true if there is an active vertex filtering mechanism for this visualization, false otherwise
    • edgesAreFiltered

      protected boolean edgesAreFiltered()
      Quick test to allow optimization of getFilteredEdges().
      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)
      Returns true if this vertex in this graph is included in the collections of elements to be rendered, and false 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)
      Returns true if this edge and its endpoints in this graph are all included in the collections of elements to be rendered, and false 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