Class AbstractCellView

  • All Implemented Interfaces:
    java.io.Serializable, CellView
    Direct Known Subclasses:
    EdgeView, PortView, VertexView

    public abstract class AbstractCellView
    extends java.lang.Object
    implements CellView, java.io.Serializable
    The abstract base class for all cell views.
    See Also:
    Serialized Form
    • Constructor Summary

      Constructors 
      Constructor Description
      AbstractCellView()
      Constructs an empty abstract cell view.
      AbstractCellView​(java.lang.Object cell)
      Constructs a view for the specified model object, and invokes update on the new instance.
    • Method Summary

      All Methods Static Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      java.util.Map changeAttributes​(GraphLayoutCache cache, java.util.Map change)
      Applies change to the attributes of the view and calls update.
      void childUpdated()
      Indicates to parent, if any, that this child has been updated.
      protected AttributeMap createAttributeMap()
      Hook for subclassers to avoid creating an empty AttributeMap during construction of the instance.
      AttributeMap getAllAttributes()
      Returns the attributes of the view combined with the attributes of the corresponding cell.
      AttributeMap getAttributes()
      Return the attributes of the view.
      java.awt.geom.Rectangle2D getBounds()
      Returns the cached bounds for the group if isleaf is false
      static java.awt.geom.Rectangle2D getBounds​(CellView[] views)
      Returns the bounding box for the specified views.
      java.lang.Object getCell()
      Returns the model object that this view represents.
      protected AttributeMap getCellAttributes​(GraphModel model)
      Hook for subclassers to avoid cloning the cell's attributes.
      static java.awt.geom.Point2D getCenterPoint​(CellView vertex)  
      CellView[] getChildViews()
      Returns the child views of this view.
      static CellView[] getDescendantViews​(CellView[] views)
      Returns all views, including descendants that have a parent in views without the PortViews.
      GraphCellEditor getEditor()
      Returns a cell editor for the view.
      abstract CellHandle getHandle​(GraphContext context)
      Returns a cell handle for the view.
      CellView getParentView()
      Returns the parent view for this view.
      java.awt.geom.Point2D getPerimeterPoint​(EdgeView edge, java.awt.geom.Point2D source, java.awt.geom.Point2D p)
      Returns the intersection of the bounding rectangle and the straight line between the source and the specified point p.
      abstract CellViewRenderer getRenderer()
      Obtains the renderer instance for this view
      java.awt.Component getRendererComponent​(JGraph graph, boolean selected, boolean focus, boolean preview)
      Returns a renderer component, configured for the view.
      protected boolean includeInGroupBounds​(CellView view)
      This is used to exclude certain cell views from the group bounds computation.
      boolean intersects​(JGraph graph, java.awt.geom.Rectangle2D rect)
      Returns true if the view intersects the given rectangle.
      boolean isLeaf()
      Returns true if the view is a leaf.
      protected void mergeAttributes()
      Implements the merging of the cell's attributes, initially stored in allAttributes, and the location attributes.
      void refresh​(GraphLayoutCache cache, CellMapper mapper, boolean createDependentViews)
      Create child views and reload properties for this view.
      void removeFromParent()
      Removes this view from the list of children of the parent.
      void scale​(double sx, double sy, java.awt.geom.Point2D origin)
      Scale view (group) by sx, sy.
      void setAttributes​(AttributeMap attributes)
      Sets the attributes of this view to the specified value
      void setBounds​(java.awt.geom.Rectangle2D bounds)
      Sets the bounds of this view.
      void setCell​(java.lang.Object cell)
      Sets the model object that this view represents to the specified cell
      void translate​(double dx, double dy)
      Translates view (group) by dx, dy.
      void update​(GraphLayoutCache cache)
      Update attributes for this view and indicate to the parent this child has been updated
      protected void updateGroupBounds()
      Updates the bounds of this view and its children
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • cellEditor

        public static transient GraphCellEditor cellEditor
        Editor for the cell.
      • cell

        protected java.lang.Object cell
        Reference to the cell for this view
      • parent

        protected CellView parent
        Cached parent view
      • childViews

        protected java.util.List childViews
        Cached child views. Default is a ArrayList with allocation size 0.
      • allAttributes

        protected AttributeMap allAttributes
        Contains the complete set of attributes, including the cell's attributes. The values in this map are overriden by the corresponding values in attributes.
      • attributes

        protected AttributeMap attributes
        Hashtable for attributes. Value in this map override the values in allAttributes.
      • groupBounds

        protected transient java.awt.geom.Rectangle2D groupBounds
        Cached bounds of all children if vertex is a group
    • Constructor Detail

      • AbstractCellView

        public AbstractCellView()
        Constructs an empty abstract cell view. You should set a cell on this view using setCell before doing anything. Optionally you can also set a different attribute map using setAttributeMap. Note: To change the attribute map you should now use the changeAttributes method.
      • AbstractCellView

        public AbstractCellView​(java.lang.Object cell)
        Constructs a view for the specified model object, and invokes update on the new instance.
        Parameters:
        cell - reference to the model object
    • Method Detail

      • createAttributeMap

        protected AttributeMap createAttributeMap()
        Hook for subclassers to avoid creating an empty AttributeMap during construction of the instance. Override this and return null if you want to avoid creation of an attribute map at construction time.
      • getCell

        public java.lang.Object getCell()
        Returns the model object that this view represents.
        Specified by:
        getCell in interface CellView
        Returns:
        the model object that this view represents
      • setCell

        public void setCell​(java.lang.Object cell)
        Sets the model object that this view represents to the specified cell
        Parameters:
        cell - the model object this view will represent
      • refresh

        public void refresh​(GraphLayoutCache cache,
                            CellMapper mapper,
                            boolean createDependentViews)
        Create child views and reload properties for this view. Invokes update first.
        Specified by:
        refresh in interface CellView
        Parameters:
        cache - the graph model to be used
        mapper - the cell mapper to be used
        createDependentViews - whether or not to create a view if one does not already exist
      • getCellAttributes

        protected AttributeMap getCellAttributes​(GraphModel model)
        Hook for subclassers to avoid cloning the cell's attributes. Return model.getAttributes(cell) to avoid cloning.
      • update

        public void update​(GraphLayoutCache cache)
        Update attributes for this view and indicate to the parent this child has been updated
        Specified by:
        update in interface CellView
        Parameters:
        cache - TODO
      • mergeAttributes

        protected void mergeAttributes()
        Implements the merging of the cell's attributes, initially stored in allAttributes, and the location attributes. The result should be stored in allAttributes. This hook is for subclassers to change the merging strategy.
      • childUpdated

        public void childUpdated()
        Indicates to parent, if any, that this child has been updated.
        Specified by:
        childUpdated in interface CellView
      • getParentView

        public CellView getParentView()
        Returns the parent view for this view.
        Specified by:
        getParentView in interface CellView
        Returns:
        the parent view for this view
      • getChildViews

        public CellView[] getChildViews()
        Returns the child views of this view.
        Specified by:
        getChildViews in interface CellView
        Returns:
        the child views of this view
      • getDescendantViews

        public static CellView[] getDescendantViews​(CellView[] views)
        Returns all views, including descendants that have a parent in views without the PortViews. Note: Iterative Implementation using view.getChildViews. This returns the array in inverse order, ie with the top most cell view at index 0.
        Parameters:
        views - the cell views whose descendants are to be returned
        Returns:
        the specified views and all their descendant views
      • removeFromParent

        public void removeFromParent()
        Removes this view from the list of children of the parent.
        Specified by:
        removeFromParent in interface CellView
      • isLeaf

        public boolean isLeaf()
        Returns true if the view is a leaf.
        Specified by:
        isLeaf in interface CellView
        Returns:
        true if the view is a leaf
      • getAttributes

        public AttributeMap getAttributes()
        Return the attributes of the view.
        Specified by:
        getAttributes in interface CellView
        Returns:
        the attributes of this view
      • setAttributes

        public void setAttributes​(AttributeMap attributes)
        Sets the attributes of this view to the specified value
        Parameters:
        attributes - the new attributes to set
      • getAllAttributes

        public AttributeMap getAllAttributes()
        Returns the attributes of the view combined with the attributes of the corresponding cell. The view's attributes override the cell's attributes with the same key.
        Specified by:
        getAllAttributes in interface CellView
      • changeAttributes

        public java.util.Map changeAttributes​(GraphLayoutCache cache,
                                              java.util.Map change)
        Applies change to the attributes of the view and calls update.
        Specified by:
        changeAttributes in interface CellView
        Parameters:
        change - a map of attribute changes to apply
        Returns:
        the undo map that reverses this change
      • getBounds

        public java.awt.geom.Rectangle2D getBounds()
        Returns the cached bounds for the group if isleaf is false
        Specified by:
        getBounds in interface CellView
      • getBounds

        public static java.awt.geom.Rectangle2D getBounds​(CellView[] views)
        Returns the bounding box for the specified views.
        Parameters:
        views - the views for whom the bounding box is to be determined
        Returns:
        the bounding box of the specified views
      • setBounds

        public void setBounds​(java.awt.geom.Rectangle2D bounds)
        Sets the bounds of this view. Calls translateView and scaleView.
        Parameters:
        bounds - the new bounds for this cell view
      • updateGroupBounds

        protected void updateGroupBounds()
        Updates the bounds of this view and its children
      • includeInGroupBounds

        protected boolean includeInGroupBounds​(CellView view)
        This is used to exclude certain cell views from the group bounds computation. This implementation returns false for edges that connect to one of their ancestor groups (eg. parent).
        Parameters:
        view - the cell view to be included in the group bounds or not
        Returns:
        whether or not to include the specified cell in the group bounds
      • translate

        public void translate​(double dx,
                              double dy)
        Translates view (group) by dx, dy.
        Parameters:
        dx - the x-coordinate amount to translate by
        dy - the y-coordinate amount to translate by
      • scale

        public void scale​(double sx,
                          double sy,
                          java.awt.geom.Point2D origin)
        Scale view (group) by sx, sy.
        Parameters:
        sx - the multiple by which the x coordinate position of the cell view is to be scaled
        sy - the multiple by which the y coordinate position of the cell view is to be scaled
        origin - the origin point from which the scaling will calculate
      • intersects

        public boolean intersects​(JGraph graph,
                                  java.awt.geom.Rectangle2D rect)
        Returns true if the view intersects the given rectangle.
        Specified by:
        intersects in interface CellView
        Parameters:
        graph - the JGraph instance of the view
        rect - the rectangle within which intersection is being checked for
        Returns:
        whether or not the rectangle specified intersects the view
      • getRendererComponent

        public java.awt.Component getRendererComponent​(JGraph graph,
                                                       boolean selected,
                                                       boolean focus,
                                                       boolean preview)
        Returns a renderer component, configured for the view. The method used to obtain the renderer instance must install the necessary attributes from this view
        Specified by:
        getRendererComponent in interface CellView
        Parameters:
        graph - the JGraph instance of the view
        selected - whether or not this view is selected
        focus - whether or not this view is the focus
        preview - whether or not it is a preview of the view
        Returns:
        the renderer component for this view with this views attributes installed
      • getRenderer

        public abstract CellViewRenderer getRenderer()
        Obtains the renderer instance for this view
        Returns:
        the renderer instance for this view
      • getHandle

        public abstract CellHandle getHandle​(GraphContext context)
        Returns a cell handle for the view.
        Specified by:
        getHandle in interface CellView
        Parameters:
        context - the context of this cell view (cells indirectly affected by it)
        Returns:
        the cell handle for this view
      • getEditor

        public GraphCellEditor getEditor()
        Returns a cell editor for the view.
        Specified by:
        getEditor in interface CellView
        Returns:
        the cell editor for this view
      • getCenterPoint

        public static java.awt.geom.Point2D getCenterPoint​(CellView vertex)
      • getPerimeterPoint

        public java.awt.geom.Point2D getPerimeterPoint​(EdgeView edge,
                                                       java.awt.geom.Point2D source,
                                                       java.awt.geom.Point2D p)
        Returns the intersection of the bounding rectangle and the straight line between the source and the specified point p. The specified point is expected not to intersect the bounds. Note: You must override this method if you use a different renderer. This is because this method relies on the VertexRenderer interface, which can not be safely assumed for subclassers.
        Specified by:
        getPerimeterPoint in interface CellView