Class AttributeMap

  • All Implemented Interfaces:
    java.io.Serializable, java.lang.Cloneable, java.util.Map

    public class AttributeMap
    extends java.util.Hashtable
    implements java.lang.Cloneable
    A map specifically for the storage of attributes of graph cells. The main advantage of the AttributeMap is that it allows to override cell view behaviour for scaling, translation, diffing, and cloning on a per instance basis without having to change the GraphConstants class
    See Also:
    Serialized Form
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static AttributeMap emptyAttributeMap
      Shared empty attribute map to return instead of null in applyMap.
    • Constructor Summary

      Constructors 
      Constructor Description
      AttributeMap()
      Creates a new attribute map with an initial capacity of 8.
      AttributeMap​(int initialCapacity)
      Creates a new attribute map with the specified initial capacity
      AttributeMap​(int initialCapacity, float loadCapacity)
      Constructs a new, empty hashtable with the specified initial capacity and the specified load factor.
      AttributeMap​(java.util.Map map)
      Constructs a new AttributeMap with the same mappings as the given Map.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      AttributeMap applyMap​(java.util.Map change)
      Apply the change to this views attributes.
      java.lang.Object applyValue​(java.lang.Object key, java.lang.Object value)
      Apply the key to value
      java.lang.Object clone()
      Returns a clone of map, from keys to values.
      AttributeMap cloneEntries​(AttributeMap newMap)
      Clones special object entried in the given map.
      java.awt.geom.Point2D[] clonePoints​(java.awt.geom.Point2D[] points)
      Returns a list where all instances of PortView are replaced by their correspnding Point instance.
      java.util.List clonePoints​(java.lang.Object[] points, boolean convertPortViews)
      Returns a list where all instances of PortView are replaced by their correspnding Point instance.
      java.util.List clonePoints​(java.util.List points)
      Returns a list where all instances of PortView are replaced by their correspnding Point instance.
      java.awt.geom.Point2D createPoint()
      Creates a point of suitable type for this attribute map
      java.awt.geom.Point2D createPoint​(double x, double y)
      Creates a point of suitable type for this attribute map with the same values as those passed in
      java.awt.geom.Point2D createPoint​(java.awt.geom.Point2D p)
      Creates a point of suitable type for this attribute map with the same values as the point passed in
      java.awt.geom.Rectangle2D createRect()
      Creates a rectangle of suitable type for this attribute map
      java.awt.geom.Rectangle2D createRect​(double x, double y, double w, double h)
      Creates a rectangle of suitable type for this attribute map with the same values as those passed in
      java.awt.geom.Rectangle2D createRect​(double x, double y, double w, double h, double grow1, double grow2)
      Creates a rectangle of suitable type for this attribute map
      java.awt.geom.Rectangle2D createRect​(java.awt.geom.Point2D pt)
      Creates a rectangle of suitable type for this attribute map at the position of the point passed in
      java.awt.geom.Rectangle2D createRect​(java.awt.geom.Point2D pt, double size)
      Creates a rectangle of suitable type for this attribute map at the position of the point passed in with lengths size
      java.awt.geom.Rectangle2D createRect​(java.awt.geom.Rectangle2D rect)
      Clones the rectangle passed in
      java.awt.geom.Rectangle2D createRect​(java.awt.geom.Rectangle2D rect, double grow1, double grow2)
      Creates a clone of the rectangle passed in and manipulates it by grow1 and grow2
      java.util.Map diff​(java.util.Map newState)
      Returns a new map that contains all (key, value)-pairs of newState where either key is not used or value is different for key in oldState.
      void scale​(double sx, double sy, java.awt.geom.Point2D origin)
      Scales map by the given amount.
      void translate​(double dx, double dy)
      Translates map by the given amount.
      static void translate​(java.util.Collection c, double dx, double dy)
      Translates the maps in c using translate(Map, int, int).
      • Methods inherited from class java.util.Hashtable

        clear, compute, computeIfAbsent, computeIfPresent, contains, containsKey, containsValue, elements, entrySet, equals, forEach, get, getOrDefault, hashCode, isEmpty, keys, keySet, merge, put, putAll, putIfAbsent, rehash, remove, remove, replace, replace, replaceAll, size, toString, values
      • Methods inherited from class java.lang.Object

        finalize, getClass, notify, notifyAll, wait, wait, wait
    • Field Detail

      • emptyAttributeMap

        public static transient AttributeMap emptyAttributeMap
        Shared empty attribute map to return instead of null in applyMap.
    • Constructor Detail

      • AttributeMap

        public AttributeMap()
        Creates a new attribute map with an initial capacity of 8.
      • AttributeMap

        public AttributeMap​(int initialCapacity)
        Creates a new attribute map with the specified initial capacity
        Parameters:
        initialCapacity - the initial capacity of the new map
      • AttributeMap

        public AttributeMap​(int initialCapacity,
                            float loadCapacity)
        Constructs a new, empty hashtable with the specified initial capacity and the specified load factor.
        Parameters:
        initialCapacity - the initial capacity of the hashtable.
        loadCapacity - the load factor of the hashtable.
      • AttributeMap

        public AttributeMap​(java.util.Map map)
        Constructs a new AttributeMap with the same mappings as the given Map.
        Parameters:
        map - the input map to copy
    • Method Detail

      • createPoint

        public java.awt.geom.Point2D createPoint()
        Creates a point of suitable type for this attribute map
        Returns:
        a new point
      • createPoint

        public java.awt.geom.Point2D createPoint​(java.awt.geom.Point2D p)
        Creates a point of suitable type for this attribute map with the same values as the point passed in
        Parameters:
        p - the point whose values the new point are to be based on
        Returns:
        a new copy of the point passed in
      • createPoint

        public java.awt.geom.Point2D createPoint​(double x,
                                                 double y)
        Creates a point of suitable type for this attribute map with the same values as those passed in
        Parameters:
        x - the x-coordinate position of the new point
        y - the y-coordinate position of the new point
        Returns:
        a new point at the coordinates passed in
      • createRect

        public java.awt.geom.Rectangle2D createRect()
        Creates a rectangle of suitable type for this attribute map
        Returns:
        a new rectangle
      • createRect

        public java.awt.geom.Rectangle2D createRect​(double x,
                                                    double y,
                                                    double w,
                                                    double h)
        Creates a rectangle of suitable type for this attribute map with the same values as those passed in
        Parameters:
        x - the x-coordinate position of the new rectangle
        y - the y-coordinate position of the new rectangle
        w - the width of the new rectangle
        h - the height of the new rectangle
        Returns:
        a new rectangle at the coordinates and of the dimensions passed in
      • createRect

        public java.awt.geom.Rectangle2D createRect​(java.awt.geom.Point2D pt)
        Creates a rectangle of suitable type for this attribute map at the position of the point passed in
        Parameters:
        pt - the position of the new rectangle
        Returns:
        a new rectangle the specified coordinates of zero size
      • createRect

        public java.awt.geom.Rectangle2D createRect​(java.awt.geom.Point2D pt,
                                                    double size)
        Creates a rectangle of suitable type for this attribute map at the position of the point passed in with lengths size
        Parameters:
        pt - the position of the new rectangle
        size - the length of both sides of the rectangle
        Returns:
        a new rectangle the specified position and dimensions
      • createRect

        public java.awt.geom.Rectangle2D createRect​(java.awt.geom.Rectangle2D rect)
        Clones the rectangle passed in
        Parameters:
        rect - the rectangle to clone
        Returns:
        a copy of the rectangle passed in
      • createRect

        public java.awt.geom.Rectangle2D createRect​(double x,
                                                    double y,
                                                    double w,
                                                    double h,
                                                    double grow1,
                                                    double grow2)
        Creates a rectangle of suitable type for this attribute map
        Parameters:
        x - the x-coordinate position of the new rectangle
        y - the y-coordinate position of the new rectangle
        w - the width of the new rectangle
        h - the height of the new rectangle
        grow1 - the amount both dimensions are to be increased by and the position coorindates of the rectangle are to be decreased by
        grow2 - the additional amount by which both dimensions are to be increased by
        Returns:
        a new rectangle at the coordinates and of the dimensions passed in
      • createRect

        public java.awt.geom.Rectangle2D createRect​(java.awt.geom.Rectangle2D rect,
                                                    double grow1,
                                                    double grow2)
        Creates a clone of the rectangle passed in and manipulates it by grow1 and grow2
        Parameters:
        grow1 - the amount both dimensions are to be increased by and the position coorindates of the rectangle are to be decreased by
        grow2 - the additional amount by which both dimensions are to be increased by
        Returns:
        a new rectangle at the coordinates and of the dimensions passed in
      • applyMap

        public AttributeMap applyMap​(java.util.Map change)
        Apply the change to this views attributes. change must be a Map previously obtained from this object.
        Parameters:
        change - the change to apply
        Returns:
        a map that may be used to undo the change to target.
      • applyValue

        public java.lang.Object applyValue​(java.lang.Object key,
                                           java.lang.Object value)
        Apply the key to value
        Parameters:
        key - the map key whose value is to be altered
        value - the new value to be applied to the specified key
        Returns:
        the old value.
      • clonePoints

        public java.awt.geom.Point2D[] clonePoints​(java.awt.geom.Point2D[] points)
        Returns a list where all instances of PortView are replaced by their correspnding Point instance.
        Parameters:
        points - the points to be cloned
        Returns:
        the cloned points
      • clonePoints

        public java.util.List clonePoints​(java.util.List points)
        Returns a list where all instances of PortView are replaced by their correspnding Point instance.
        Parameters:
        points - the points to be cloned
        Returns:
        the cloned points
      • clonePoints

        public java.util.List clonePoints​(java.lang.Object[] points,
                                          boolean convertPortViews)
        Returns a list where all instances of PortView are replaced by their correspnding Point instance.
      • translate

        public static void translate​(java.util.Collection c,
                                     double dx,
                                     double dy)
        Translates the maps in c using translate(Map, int, int).
      • translate

        public void translate​(double dx,
                              double dy)
        Translates map by the given amount.
      • scale

        public void scale​(double sx,
                          double sy,
                          java.awt.geom.Point2D origin)
        Scales map by the given amount.
      • diff

        public java.util.Map diff​(java.util.Map newState)
        Returns a new map that contains all (key, value)-pairs of newState where either key is not used or value is different for key in oldState. In other words, this method removes the common entries from oldState and newState, and returns the "difference" between the two. This method never returns null.
      • clone

        public java.lang.Object clone()
        Returns a clone of map, from keys to values. If the map contains bounds or points, these are cloned as well. References to PortViews are replaces by points.
        Note: Extend this method to clone custom user objects.
        Overrides:
        clone in class java.util.Hashtable
      • cloneEntries

        public AttributeMap cloneEntries​(AttributeMap newMap)
        Clones special object entried in the given map.