Class Style

  • All Implemented Interfaces:
    com.nomagic.magicdraw.core.project.options.PersistentStyle, PropertyVisitorAcceptor, java.beans.PropertyChangeListener, java.lang.Cloneable, java.util.EventListener

    @OpenApiAll
    public class Style
    extends java.lang.Object
    implements java.lang.Cloneable, PropertyVisitorAcceptor, java.beans.PropertyChangeListener, com.nomagic.magicdraw.core.project.options.PersistentStyle
    Style stores and manages a set of PropertyManagers.
    • Field Detail

      • CHANGE_STYLE_PROPERTY

        public static final java.lang.String CHANGE_STYLE_PROPERTY
        Name of property fired on some style change.
        See Also:
        Constant Field Values
      • CHANGE_STYLE_PROPERTY_VALUE

        public static final java.lang.String CHANGE_STYLE_PROPERTY_VALUE
        See Also:
        Constant Field Values
      • ADDED_STYLE_MANAGER

        @Deprecated
        public static final java.lang.String ADDED_STYLE_MANAGER
        Deprecated.
        See Also:
        Constant Field Values
      • byName

        @CheckForNull
        private java.util.Map<java.lang.String,​java.lang.Object> byName
      • name

        private java.lang.String name
        The name of the style.
      • isDefault

        private boolean isDefault
        Style is default one?
      • listeners

        @CheckForNull
        private com.nomagic.utils.AList<java.beans.PropertyChangeListener> listeners
        The element can registry a property change listeners and fire property change events on some property value change. This member keeps a reference to the PropertyChangeSupport.
      • id

        private java.lang.String id
        ID of style, used to restore references from not loaded diagrams.
      • MANAGER_BY_NAME_COMPARATOR

        private static final java.util.Comparator<PropertyManager> MANAGER_BY_NAME_COMPARATOR
        The comparator for comparing two PropertyManagers by name.
      • knownStereotypes

        @CheckForNull
        private java.util.Set<java.lang.String> knownStereotypes
    • Constructor Detail

      • Style

        public Style()
        Constructs new Style. Style will have name "default", but it will not be default.
    • Method Detail

      • getCompareKey

        private static java.lang.String getCompareKey​(PropertyManager propertyManager)
      • createManagersList

        private void createManagersList()
      • addManager

        public void addManager​(@CheckForNull
                               PropertyManager manager)
        Adds given property manager.
        Parameters:
        manager - the manager to add.
      • resetKnownStereotypes

        private void resetKnownStereotypes()
      • removeManager

        public void removeManager​(PropertyManager manager)
        Removes given property manager.
        Parameters:
        manager - the manager to remove.
      • getManagerCount

        public int getManagerCount()
        Returns managers count.
        Returns:
        count of managers.
      • setManagers

        public void setManagers​(java.util.Collection<PropertyManager> managers)
        Sets the collection of all managers.
        Parameters:
        managers - a collection of new managers.
      • getName

        public java.lang.String getName()
        Returns the name of the style.
        Returns:
        name of the style.
      • setName

        public void setName​(java.lang.String name)
        Set the name of the style.
        Parameters:
        name - the new name of the style.
      • setAppliedPropertyManagerIDs

        public void setAppliedPropertyManagerIDs​(java.util.Map<PropertyManager,​PropertyManager> propertyManagers)
        Sets applied property manager id to managers which does not have it.
        Parameters:
        propertyManagers - property managers to analyze
      • toString

        public java.lang.String toString()
        Returns a string representation of the style. Used for debug.
        Overrides:
        toString in class java.lang.Object
        Returns:
        the string representation.
      • setDefault

        public void setDefault​(boolean def)
        Sets default flag value.
        Parameters:
        def - new flag value.
      • isDefault

        public boolean isDefault()
        Is this style a default one?
        Returns:
        default flag value.
      • clone

        public java.lang.Object clone()
        /** Creates and returns a copy of this style. Does deep clone.
        Overrides:
        clone in class java.lang.Object
        Returns:
        the clone of this style.
      • cloneManagers

        protected void cloneManagers​(Style newS)
      • getManagers

        public java.util.Collection<PropertyManager> getManagers()
        Returns a collection of all managers.
        Returns:
        all managers.
      • getOrderedManagers

        public java.util.List<PropertyManager> getOrderedManagers()
        Returns collection of managers sorted by name.
        Returns:
        collection of managers sorted by name.
      • getManager

        @CheckForNull
        public PropertyManager getManager​(java.lang.String name)
        Returns property manager with given name.
        Parameters:
        name - the name of manager.
        Returns:
        manager with given name or null.
      • rebuildByName

        private void rebuildByName()
      • appendManagerByNameCache

        private void appendManagerByNameCache​(PropertyManager manager)
      • removeManagerByNameCache

        private void removeManagerByNameCache​(PropertyManager manager)
      • accept

        public void accept​(PropertyVisitor visitor)
                    throws java.lang.Exception
        Accepts the given visitor.
        Specified by:
        accept in interface PropertyVisitorAcceptor
        Parameters:
        visitor - the PropertyVisitor.
        Throws:
        java.lang.Exception
      • append

        public void append​(Style s)
        Adds all managers from given style to this style. If some manager exists in given style, but does not exist in this style - clone this manager and add. If some manager exists in given style and exists in this style - append properties from given manager to this manager.
        Parameters:
        s - the given style.
      • apply

        public java.util.Map<PropertyManager,​PropertyManager> apply​(Style s)
        Applies all managers from given style to the existing managers here. If some manager exists in given style, but does not exist in this style - do nothing.
        Parameters:
        s - the given style.
      • appendExtendedManagers

        public void appendExtendedManagers​(Style s)
      • isDiagramStyle

        public boolean isDiagramStyle()
        Returns:
        if it is diagram style
      • changeProperty

        private void changeProperty​(Property p)
        Replaces existing property in all managers with the given one.
        Parameters:
        p - the given property.
      • propertyChange

        public void propertyChange​(java.beans.PropertyChangeEvent evt)
        On CHANGE_STYLE_PROPERTY property change takes the manager from property's new Value and replaces itself properties with properties from this manager.
        Specified by:
        propertyChange in interface java.beans.PropertyChangeListener
        Parameters:
        evt - PropertyChangeEvent.
      • findPropertyManagerWithSamePath

        @CheckForNull
        public static PropertyManager findPropertyManagerWithSamePath​(Style findIn,
                                                                      PropertyManager find)
        Finds same property manager(with same path) in given style.
        Parameters:
        findIn - style where find manager.
        find - manager to find.
        Returns:
        found manager, or null if not found.
      • generateID

        public void generateID()
      • getID

        public java.lang.String getID()
        Returns:
        Returns the iD. Can return null if ID was not generated. ID is generated only for styles used for not loaded diagrams.
      • setID

        public void setID​(java.lang.String id)
        Set Id
        Parameters:
        id - given ID.
      • addPropertyChangeListener

        public void addPropertyChangeListener​(java.beans.PropertyChangeListener listener)
        Registers the listener to the element. The given listener will get notifications about property changes in this element.
        Parameters:
        listener - the PropertyChangeListener to be added.
        See Also:
        PropertyChangeSupport
      • removePropertyChangeListener

        public void removePropertyChangeListener​(java.beans.PropertyChangeListener listener)
        Unregisters the given listener from the element. The given listener will not get any notifications about property changes in this element.
        Parameters:
        listener - the PropertyChangeListener to be removed.
        See Also:
        PropertyChangeSupport
      • firePropertyChange

        private void firePropertyChange​(java.lang.String propertyName,
                                        @CheckForNull
                                        java.lang.Object oldValue,
                                        java.lang.Object newValue)
        Delegates firePropertyChange to the PropertyChangeSupport, the member of this class, which reports a bound property update to any registered listeners. No event is fired if old and new values are equal or null.
        Parameters:
        propertyName - the programmatic name of the property that was changed.
        oldValue - the old value of the property
        newValue - the new value of the property
        See Also:
        PropertyChangeSupport
      • generateDefaultDescriptionID

        public static void generateDefaultDescriptionID​(Style style)
        Generate default description id.
        Parameters:
        style - style
      • isSnapshotStyleForDiagramSymbols

        public boolean isSnapshotStyleForDiagramSymbols()
        Returns:
        true if style is clone used for diagram style preserving.
      • isEqual

        public boolean isEqual​(Style style)
        Checks if given style has same property managers with same values.
        Parameters:
        style - given style.
        Returns:
        true if given style has same values as this style.
      • updateDefinedIn

        public void updateDefinedIn​(Style src)
        Update all ExtendablePropertyManager in this style defined in.
        Parameters:
        src - source to get defined in values
      • getManagersMap

        private java.util.HashMap<java.lang.String,​PropertyManager> getManagersMap()
      • hasStereotype

        public boolean hasStereotype​(java.lang.String id)
        Check if style has stereotype with given id. This method is faster than iterate through all property managers.
        Parameters:
        id - stereotype id
        Returns:
        true if stereotype with given id has property manager in this style.
      • fillStereotypes

        private void fillStereotypes()
      • propertyManagerNameChanged

        public void propertyManagerNameChanged​(PropertyManager manager)
        Called when property manager name is changed
        Parameters:
        manager - manager which name is changed