Class PresentationElement

java.lang.Object
com.nomagic.magicdraw.uml.MDElementImpl
com.nomagic.magicdraw.uml.symbols.PresentationElement
All Implemented Interfaces:
BaseElement, MDElement, ModelElementProvider, NameOwner, PropertyChangeListener, Cloneable, Comparable, EventListener
Direct Known Subclasses:
AbstractDiagramPresentationElement, PathConnector

@OpenApi public abstract class PresentationElement extends com.nomagic.magicdraw.uml.MDElementImpl implements PropertyChangeListener, ModelElementProvider, NameOwner
Base class for all visual elements used in the UML diagrams.
  • Field Details

    • MAX_LINE_WIDTH

      public static final double MAX_LINE_WIDTH
      See Also:
    • MIN_LINE_WIDTH

      public static final double MIN_LINE_WIDTH
      See Also:
    • HANDLE_SIZE

      public static final int HANDLE_SIZE
      See Also:
    • SOLID_STROKE

      @OpenApi public static final int SOLID_STROKE
      Solid path stroke.
      See Also:
    • DASHED_STROKE

      @OpenApi public static final int DASHED_STROKE
      Dashed path stroke.
      See Also:
    • DOTTED_STROKE

      @OpenApi public static final int DOTTED_STROKE
      Dotted path stroke.
      See Also:
    • SHADOW_WIDTH

      public static final int SHADOW_WIDTH
      Symbol shadow width in pixels
      See Also:
    • DEFAULT_LINE_WIDTH

      public static final int DEFAULT_LINE_WIDTH
      See Also:
    • peStyle

      protected com.dassault_systemes.modeler.foundation.diagram.style.PresentationElementStyle peStyle
  • Constructor Details

    • PresentationElement

      public PresentationElement()
    • PresentationElement

      public PresentationElement(@CheckForNull PresentationElement parent)
  • Method Details

    • sSetElement

      public void sSetElement(@CheckForNull Element element)
    • generateID

      public String generateID()
      Description copied from class: com.nomagic.magicdraw.uml.MDElementImpl
      Generate ID.
      Overrides:
      generateID in class com.nomagic.magicdraw.uml.MDElementImpl
    • setElement

      public void setElement(@CheckForNull Element element)
    • getElement

      @OpenApi @CheckForNull public Element getElement()
      Returns model element of this presentation element. Some presentation elements (for example TextBoxes) do not have model elements.
      Specified by:
      getElement in interface ModelElementProvider
      Returns:
      model element of this presentation element.
    • getActualElement

      @CheckForNull public Element getActualElement()
      Because some views returns theirs parent model element, we do not know have they this member set or not.
    • sSetParent

      public void sSetParent(@CheckForNull PresentationElement parent)
      Sets parent for this view. For adding symbols to other symbols use addPresentationElement(PresentationElement) or sAddPresentationElement(PresentationElement)}
      Parameters:
      parent - parent view
    • setParent

      public void setParent(PresentationElement parent)
      Sets parent for this view. For adding symbols to other symbols use addPresentationElement(PresentationElement) or sAddPresentationElement(PresentationElement)}
      Parameters:
      parent - parent view
    • onParentChange

      public void onParentChange(PresentationElement child, PresentationElement oldChildParent)
    • onChildAdd

      public void onChildAdd(PresentationElement child)
    • onChildRemove

      public void onChildRemove(PresentationElement child)
    • hasSharedModelElement

      public boolean hasSharedModelElement()
      Returns true if ModelElement of this symbol can represented with other symbol. If ModelElement is not shared, it can be deleted together with symbol deleting.
      Returns:
      true if element of this symbol can be represented with other symbol.
    • setTextEditable

      public void setTextEditable(boolean editable)
      Sets text editing flag.
      Parameters:
      editable - flag
    • isTextEditable

      public boolean isTextEditable()
      Checks text editing flag.
      Returns:
      true if the object view text is editable; false otherwise.
    • collectSubPresentationElements

      public final void collectSubPresentationElements(Collection<PresentationElement> collection)
      Collects all sub-presentation elements into given collection. Includes this symbol too.
      Parameters:
      collection - collection in which sub presentation elements should be collected.
    • collectSubPresentationElements

      public final void collectSubPresentationElements(Collection<PresentationElement> collection, Predicate<PresentationElement> predicate)
      Collects all sub-presentation elements that match given predicate into given collection. Includes this symbol too.
      Parameters:
      collection - collection in which sub presentation elements should be collected.
      predicate - predicate that will check if sub element should be included.
    • collectSubShowingPresentationElements

      public final void collectSubShowingPresentationElements(Collection<PresentationElement> col)
      Collect all visible children starting from current element. In case some element in hierarchy is not visible, children of this element are not added also even if they are visible.
      Parameters:
      col - result
    • getPresentationElementAt

      @CheckForNull public final PresentationElement getPresentationElementAt(Point p)
      Gets object view at point.
      Parameters:
      p - object view at point location
      Returns:
      object view at this point
    • getPresentationElementAt

      @CheckForNull public PresentationElement getPresentationElementAt(Point pt, com.nomagic.magicdraw.uml.symbols.IntersectionKind kind)
      Gets object view at point.
      Parameters:
      p - object view at point location
      kind - intersection kind to check for
      Returns:
      object view at this point
    • getPresentationElementAt

      @CheckForNull public final PresentationElement getPresentationElementAt(Point relativePoint, com.nomagic.magicdraw.uml.symbols.SortManagerProvider sortManagerProvider)
      Gets object view at point.
      Parameters:
      relativePoint - object view at point location.
      sortManagerProvider - sort manager for searching elements.
      Returns:
      object view at this point.
    • getPresentationElementAt

      @CheckForNull public PresentationElement getPresentationElementAt(Point relativePoint, com.nomagic.magicdraw.uml.symbols.SortManagerProvider sortManagerProvider, com.nomagic.magicdraw.uml.symbols.IntersectionKind kind)
      Gets object view at point.
      Parameters:
      relativePoint - object view at point location.
      sortManagerProvider - sort manager for searching elements.
      kind - intersection kind to check for
      Returns:
      object view at this point.
    • getPresentationElementsAt

      @CheckForNull public final List<PresentationElement> getPresentationElementsAt(Point p)
      Gets objects at point.
      Parameters:
      p - object view at point location.
      Returns:
      object view at this point.
    • getPresentationElementsAt

      @CheckForNull public List<PresentationElement> getPresentationElementsAt(Point p, com.nomagic.magicdraw.uml.symbols.IntersectionKind kind)
      Gets objects at point.
      Parameters:
      p - object view at point location.
      kind - intersection kind to check for
      Returns:
      object view at this point.
    • getPresentationElementsAt

      @CheckForNull public List<PresentationElement> getPresentationElementsAt(Point relativePoint, com.nomagic.magicdraw.uml.symbols.SortManagerProvider sortManagerProvider)
      Gets object view at point.
      Parameters:
      relativePoint - object view at point location.
      sortManagerProvider - sort manager for searching elements.
      Returns:
      object view at this point.
    • getPresentationElementsAt

      @CheckForNull public List<PresentationElement> getPresentationElementsAt(Point relativePoint, com.nomagic.magicdraw.uml.symbols.SortManagerProvider sortManagerProvider, com.nomagic.magicdraw.uml.symbols.IntersectionKind kind)
      Gets object view at point.
      Parameters:
      relativePoint - object view at point location.
      sortManagerProvider - sort manager for searching elements.
      kind - intersection kind to check for
      Returns:
      object view at this point.
    • getPresentationElementAt

      @CheckForNull public final PresentationElement getPresentationElementAt(int index)
      Gets object view at specified position from container
      Parameters:
      index - container element index
      Returns:
      symbol at given index
    • getPresentationElementCount

      public final int getPresentationElementCount()
      Returns children count in container.
      Returns:
      children count in container.
    • getPresentationElementIndex

      public int getPresentationElementIndex(PresentationElement element)
      Get index of the given presentation element in the container.
      Parameters:
      element - presentation element
      Returns:
      index in the presentation element container or -1 if such presentation element can not be found
    • isParentOf

      public boolean isParentOf(@CheckForNull PresentationElement child)
      Checks if object is child of this object.
      Parameters:
      child - object to check.
      Returns:
      true if obj is child of this object.
    • isParentOf

      public boolean isParentOf(BaseElement obj)
      Description copied from interface: BaseElement
      Returns true, if current element is parent of given element. Return false in this implementation.
      Specified by:
      isParentOf in interface BaseElement
      Overrides:
      isParentOf in class com.nomagic.magicdraw.uml.MDElementImpl
      Parameters:
      obj - the given element(possible child).
      Returns:
      true if obj is the parent of this object.
    • onDiagramSurfaceSet

      public void onDiagramSurfaceSet()
    • registerInSortManager

      public void registerInSortManager()
      Registers this view in the sort manager
    • getDiagramSurface

      @Deprecated(since="2024x Refresh3", forRemoval=true) @CheckForNull @OpenApi public DiagramSurface getDiagramSurface()
      Deprecated, for removal: This API element is subject to removal in a future version.
      use DiagramSurface.getDiagramSurface(PresentationElement). Will be removed in 2026x version.
      Returns diagram surface for this presentation element. DiagramSurface is null if diagram of this element is not opened in some window.
      Returns:
      diagram surface or null if diagram is not opened.
    • clone

      public PresentationElement clone()
      Specified by:
      clone in interface BaseElement
      Overrides:
      clone in class com.nomagic.magicdraw.uml.MDElementImpl
    • getParent

      @OpenApi public final PresentationElement getParent()
      Returns parent of this element.
      Returns:
      parent of this element.
    • getPreferredSize

      @Deprecated(since="2022x", forRemoval=true) @OpenApi public final Dimension getPreferredSize()
      Deprecated, for removal: This API element is subject to removal in a future version.
      use getPreferredDimension(). Will be removed in 2026x version.
      Returns preferable dimension of the element.
      Returns:
      preferred dimension
    • getPreferredDimension

      @OpenApi public UnmodifiableDimension getPreferredDimension()
      Returns preferable dimension of the element.
      Returns:
      preferred dimension
    • getPreferredDimensionForAutosize

      public UnmodifiableDimension getPreferredDimensionForAutosize()
      Returns preferable dimension of the element for autosize.This implementation simple returns preferred size.
      Returns:
      preferred dimension
    • getPreferredBounds

      public Rectangle getPreferredBounds()
      Calculate the smallest rectangle which would fit all contained shapes
      Returns:
      rectangle
    • getMinimumDimension

      public UnmodifiableDimension getMinimumDimension()
      get minimum possible size for object
      Returns:
      minimum dimension
    • setSize

      public final void setSize(UnmodifiableDimension size)
      set dimension of draw object
    • setSize

      public final void setSize(Dimension size)
      set dimension of draw object
    • sSetSize

      public final void sSetSize(Dimension size)
      set dimension of draw object
    • sSetSize

      public final void sSetSize(UnmodifiableDimension size)
      set dimension of draw object
    • setSize

      public final void setSize(int width, int height)
      set dimension of draw object
    • sSetSize

      public final void sSetSize(int width, int height)
      Sets dimension of draw object.
    • setLocation

      public final void setLocation(Point location)
      sets location of object
    • sSetLocation

      public final void sSetLocation(Point location)
      sets location of object
    • setLocation

      public final void setLocation(int x, int y)
      sets location of object
    • sSetLocation

      public final void sSetLocation(int x, int y)
      Sets location of object.
    • setBounds

      public abstract void setBounds(Rectangle rect) throws NoRectangleDefinedException
      sets bounds of this object view
      Parameters:
      rect - rectangle of bounds
      Throws:
      NoRectangleDefinedException
    • sSetBounds

      public abstract void sSetBounds(Rectangle rect) throws NoRectangleDefinedException
      Sets bounds of this object view only.
      Parameters:
      rect - rectangle of bounds.
      Throws:
      NoRectangleDefinedException
    • sSetBounds

      public final void sSetBounds(int x, int y, int width, int height)
    • simpleSetBounds

      public final void simpleSetBounds(int x, int y, int width, int height)
    • setBounds

      public final void setBounds(int x, int y, int width, int height)
    • simpleSetBounds

      public void simpleSetBounds(Rectangle rect)
      Sets bounding rectangle.
      Parameters:
      rect - new bounding rectangle.
    • movePathElements

      public void movePathElements()
    • movePathElementsRecursively

      public final void movePathElementsRecursively()
    • getMiddlePoint

      @CheckForNull @OpenApi public Point getMiddlePoint()
      Returns middle point of this element. Middle point for shapes usually will be center point of bounds, middle point for paths will be center of path curve.
      Returns:
      point that is considered as middle for this element.
    • getMiddlePointX

      public int getMiddlePointX()
    • getMiddlePointY

      public int getMiddlePointY()
    • getMiddlePoint

      @CheckForNull public Point getMiddlePoint(Point relativePoint)
      Gets middle point of this view,
      Parameters:
      relativePoint - relative point
      Returns:
      middle point
    • getMiddlePointX

      protected int getMiddlePointX(Point relativePoint)
    • getMiddlePointY

      protected int getMiddlePointY(Point relativePoint)
    • getIntersection

      @CheckForNull public Point getIntersection(int x, int y, @CheckForNull PathElement path)
    • getBounds

      @OpenApi public Rectangle getBounds() throws NoRectangleDefinedException
      Method returns bounds of this element. Use PresentationElementsManager to change a bounds of the element.
      Returns:
      bounds of the element.
      Throws:
      NoRectangleDefinedException - when bounds can not be calculated (some presentation elements are abstract and can not have bounds).
      See Also:
      • PresentationElementsManager.reshapeShapeElement
    • getManipulationBounds

      public Rectangle getManipulationBounds(@CheckForNull Point relativePoint)
      Gets manipulation bounds of the symbol. Manipulation bounds might differ from symbol bounds, they can be larger or smaller to help user manipulate the symbol.
      Parameters:
      relativePoint - active user point to construct manipulation bounds.
      Returns:
      symbol manipulation bounds.
    • getBoundsToRepaint

      public Rectangle getBoundsToRepaint() throws NoRectangleDefinedException
      Return bounds of the symbol that must be repainted. throws NoRectangleDefinedException
      Returns:
      rectangle of bounds
      Throws:
      NoRectangleDefinedException
    • getNotCopyBounds

      public Rectangle getNotCopyBounds() throws NoRectangleDefinedException
      get not copy bounds of object throws NoRectangleDefinedException
      Returns:
      rectangle of bounds
      Throws:
      NoRectangleDefinedException
    • intersects

      public final boolean intersects(int x, int y, int width, int height)
      checks whether object intersects with given rectangle
      Returns:
      true if object and rectangle intersects
    • coversPoint

      public final boolean coversPoint(int x, int y)
      checks if object covers provided point
      Returns:
      true if object covers this point
    • intersects

      public abstract boolean intersects(int x, int y, int width, int height, com.nomagic.magicdraw.uml.symbols.IntersectionKind kind)
      checks whether object intersects with given rectangle
      Returns:
      true if object and rectangle intersects
    • coversPoint

      public abstract boolean coversPoint(int x, int y, com.nomagic.magicdraw.uml.symbols.IntersectionKind kind)
      checks if object covers provided point
      Returns:
      true if object covers this point
    • selectObjectsForMoving

      public List<PresentationElement> selectObjectsForMoving()
      if calling simple set bounds for container shapes container moves itself and inner/related views This method selects which views must be moved.
    • childrenForMoving

      protected final List<PresentationElement> childrenForMoving()
      Calculates selected children for moving or takes result from cached.
      Returns:
      list of children for moving.
      See Also:
    • selectChildrenForMoving

      protected List<PresentationElement> selectChildrenForMoving()
      Calculates children for moving together with this symbol. This method should not be called by user. This method is just for implementation and override purpose. childrenForMoving() must be used outside.
      See Also:
    • selectPathsForMoving

      protected List<PathElement> selectPathsForMoving(@CheckForNull List<PresentationElement> subPresentationElements)
      Select paths to move with current symbol from deep structure. Some paths can be connected to current symbol, but owned in some deep child of this symbol.
      Parameters:
      subPresentationElements - sub children of this symbol
      Returns:
      paths to move together with current symbol
    • setPresentationElements

      public void setPresentationElements(List<PresentationElement> elements)
      Sets children of this element
      Parameters:
      elements - children
    • sSetPresentationElements

      public void sSetPresentationElements(List<PresentationElement> elements)
      Sets children of this element
      Parameters:
      elements - children
    • getPresentationElements

      @OpenApi public List<PresentationElement> getPresentationElements()
      Returns all children of this element
      Returns:
      all children of this element. The collection is unmodifiable.
    • getVisiblePresentationElements

      public final List<PresentationElement> getVisiblePresentationElements()
      Returns:
      not modifiable list of visible elements, including not detectable ones that should not be painted.
      See Also:
    • removePresentationElement

      public void removePresentationElement(PresentationElement element)
      Removes given child
      Parameters:
      element - child
    • sRemovePresentationElement

      public void sRemovePresentationElement(PresentationElement element)
      Removes given child
      Parameters:
      element - child
    • addPresentationElement

      public final void addPresentationElement(PresentationElement element)
      Add given child to this symbol.
      Parameters:
      element - child to add
    • addPresentationElement

      public void addPresentationElement(PresentationElement element, int index)
      Add given child to this symbol at given index
      Parameters:
      element - child to add
      index - index to add at. Can be -1
    • addPresentationElementWithoutResize

      public void addPresentationElementWithoutResize(PresentationElement element)
    • sAddPresentationElement

      public final void sAddPresentationElement(PresentationElement element)
      Add given child to this symbol.
      Parameters:
      element - child to add
    • sAddPresentationElement

      public void sAddPresentationElement(PresentationElement element, int index)
      Add given child to this symbol at given index
      Parameters:
      element - child to add
      index - index to add at. Can be -1
    • draw

      public void draw(com.nomagic.magicdraw.uml.symbols.DiagramPaintContext context)
      Draw symbol using renderer or symbol specific draw if renderer is not available. Also draw adornments.
      Parameters:
      context - paint context
    • drawBackground

      public void drawBackground(com.nomagic.magicdraw.uml.symbols.DiagramPaintContext context)
    • drawSymbolBackground

      public void drawSymbolBackground(com.nomagic.magicdraw.uml.symbols.DiagramPaintContext context)
    • paintSelfBackground

      public void paintSelfBackground(com.nomagic.magicdraw.uml.symbols.DiagramPaintContext context)
    • paintChildrenBackground

      public void paintChildrenBackground(com.nomagic.magicdraw.uml.symbols.DiagramPaintContext context)
    • drawSymbol

      public final void drawSymbol(com.nomagic.magicdraw.uml.symbols.DiagramPaintContext context)
      Draw symbol as defined by standard notation. Does not use renderers and adornments.
      Parameters:
      context - paint context
    • paintChildrenAndAdornments

      public final void paintChildrenAndAdornments(com.nomagic.magicdraw.uml.symbols.DiagramPaintContext context)
      Paint symbol adornments and children
      Parameters:
      context - paint context
    • paintSelf

      public abstract void paintSelf(com.nomagic.magicdraw.uml.symbols.DiagramPaintContext context)
    • paintChildren

      public abstract void paintChildren(com.nomagic.magicdraw.uml.symbols.DiagramPaintContext context)
    • paintAdornmentsBackground

      public void paintAdornmentsBackground(com.nomagic.magicdraw.uml.symbols.DiagramPaintContext context)
    • paintAdornments

      public void paintAdornments(com.nomagic.magicdraw.uml.symbols.DiagramPaintContext context)
    • getRenderer

      @CheckForNull public com.nomagic.magicdraw.uml.symbols.SymbolDecorator getRenderer()
      Gets rendered which could decorate this symbol.
      Returns:
      symbol renderer.
    • getSymbolRenderer

      @CheckForNull protected static com.nomagic.magicdraw.uml.symbols.SymbolDecorator getSymbolRenderer(PresentationElement presentationElement)
    • getDrawComparator

      public Comparator<PresentationElement> getDrawComparator()
    • mustShowContextMenu

      public boolean mustShowContextMenu()
    • canHavePaths

      public boolean canHavePaths()
      Returns:
      true if symbol can have connected paths. Return false here.
    • canAddChild

      public boolean canAddChild(PresentationElement symbol)
      Check of given symbol can be added as child into this symbol.
      Parameters:
      symbol - symbol
      Returns:
      true if symbol can be added
    • canAddChild

      public final boolean canAddChild(BaseElement element)
      Specified by:
      canAddChild in interface MDElement
      Overrides:
      canAddChild in class com.nomagic.magicdraw.uml.MDElementImpl
    • canAddInstance

      public boolean canAddInstance(PresentationElement symbol)
      Object view has no children.
    • canAddInstance

      public final boolean canAddInstance(BaseElement element)
      Description copied from interface: BaseElement
      Checks if this object can add element of given type. Current implementation returns false.
      Specified by:
      canAddInstance in interface BaseElement
      Overrides:
      canAddInstance in class com.nomagic.magicdraw.uml.MDElementImpl
      Returns:
      true if this object can elements of a given type.
    • dispose

      public void dispose()
      disposes ends of links when link is deleted
      Specified by:
      dispose in interface BaseElement
      Overrides:
      dispose in class com.nomagic.magicdraw.uml.MDElementImpl
    • disposeChildren

      protected void disposeChildren()
      Removes all children from itself. Such removing causes calling dispose for every child.
    • setAllSelected

      @OpenApi public void setAllSelected(boolean select)
      Selects(or deselects) all presentation elements in the diagram.
      Parameters:
      select - select or deselect all elements.
    • setSelected

      @OpenApi public void setSelected(List<PresentationElement> elements)
      Selects given elements in the diagram.
      Parameters:
      elements - elements to select.
    • setSelected

      @OpenApi public void setSelected(boolean select)
      Selects or deselects this presentation element in the diagram.
      Parameters:
      select - select or deselect this presentation element.
    • getSelected

      @OpenApi public List<PresentationElement> getSelected()
      Returns a list of selected elements in the diagram.
      Returns:
      a list of selected elements. List is unmodifiable.
    • isSelected

      @OpenApi public boolean isSelected()
      Returns true, if this element is selected in the diagram.
      Returns:
      true, if this element is selected in the diagram.
    • isDetectable

      public boolean isDetectable()
      Not detectable symbols are not drawn even they are visible. Not detectable symbols cannot be selected even they have manipulator.
      Returns:
      true if selection and painting of this symbol is currently allowed
    • initializeAndAutosize

      public final void initializeAndAutosize()
      Initialize symbol and call autosize recursively
      See Also:
    • recursiveAutosize

      public void recursiveAutosize()
      Resize recursively all symbols. Method must be called if something is changed in symbol (for example minimum size) and you want to resize (autosize) all hierarchy
    • initialize

      public void initialize()
      Initialize symbol and its children state. Symbol must be initialized before doing any resize, painting and etc. These operations can lead to unpredictable results otherwise.
    • getDiagramPresentationElement

      @OpenApi @Deprecated(since="2024x Refresh3", forRemoval=true) public final DiagramPresentationElement getDiagramPresentationElement()
      Deprecated, for removal: This API element is subject to removal in a future version.
      Returns diagram of this presentation element.
      Returns:
      diagram of this presentation element.
    • getAbstractDiagramPresentationElement

      public AbstractDiagramPresentationElement getAbstractDiagramPresentationElement()
      Returns diagram of this presentation element.
      Returns:
      diagram of this presentation element.
    • onFind

      @OpenApi public final void onFind()
      Scrolls diagram canvas to this symbol and selects this symbol
    • onFind

      @OpenApi public final void onFind(boolean center)
      Scrolls diagram canvas to this symbol and selects this symbol
      Parameters:
      center - if true, centers current view in the center of the window.
    • resizeParent

      public void resizeParent()
      Method that initiates parent resize to accommodate children if some child's bounds are changed.
    • autosizeAndResizeParent

      public void autosizeAndResizeParent()
      Resize itself and initiate parent resize
    • autosizeAndResizeManipulatedParent

      public void autosizeAndResizeManipulatedParent()
      Autosize and resize manipulated element - itself(if this element has manipulator) or manipulated parent.
    • update

      public final void update()
      Major presentation element update by model element method. Any outside code must call this method for updating the symbol by data. This method calls internal update (updatePresentationElement()) and also calls update for symbol decorator if such exits.
      See Also:
    • internalBeforeUpdate

      protected void internalBeforeUpdate(@CheckForNull com.nomagic.magicdraw.uml.symbols.SymbolDecorator renderer)
    • removeItSelfOnUpdate

      protected void removeItSelfOnUpdate()
      Remove itself during update and register this changed in command history.
    • internalUpdatePresentationElement

      protected void internalUpdatePresentationElement()
      Internal symbol update method for subclassing. It is called from update as part of full update action.
      See Also:
    • canBeDisposedOnUpdate

      protected boolean canBeDisposedOnUpdate()
      Some symbols removes themselves on update if they are not valid by model anymore. Check if such operation is possible at this moment. Do not remove symbol on undo or redo operations. We very often have situation when symbol is updated during these operations and structure in model is not yet fully restored.
      Returns:
      true if path can be removed if not valid
    • preDisposeOnUpdate

      protected boolean preDisposeOnUpdate()
      Validate symbol against model and try to fix it before actual symbol update. If symbol is not valid and can not be fixed, request symbol dispose by returning true. Check if symbol should be disposed, because model does not correspond to symbol. This may happen for example if path supplier or client in model is changed, but path still is connected to symbols of old ends.

      Method also can fix symbol if possible - for example reconnect path to other symbols in diagram and etc.

      Returns:
      true if symbol must be disposed
    • getFontHeight

      public final int getFontHeight()
      Gets font height.
      Returns:
      font height
    • isUseGradientForFill

      public boolean isUseGradientForFill()
      Do we need to use gradient for fill color? Checks diagram property.
      Returns:
      diagram gradient fill color value.
    • getFontRenderContext

      public static FontRenderContext getFontRenderContext()
    • isVisible

      public final boolean isVisible()
      Returns:
      true if element visibility is PresentationElementVisibility.VISIBLE
      See Also:
      • PresentationElementVisibility.isVisible()
    • isVisibleOrShrunken

      public final boolean isVisibleOrShrunken()
      Returns:
      true if element visibility is PresentationElementVisibility.VISIBLE or PresentationElementVisibility.SHRUNKEN
      See Also:
      • PresentationElementVisibility.isVisibleOrShrunken()
    • sSetVisible

      public final void sSetVisible(boolean visible)
      Sets element visibility flag.
      Parameters:
      visible - flag value
      See Also:
      • PresentationElementVisibility.apply(boolean)
    • setVisible

      public final void setVisible(boolean visible)
      Sets element visibility flag.
      Parameters:
      visible - flag value
      See Also:
      • PresentationElementVisibility.apply(boolean)
    • getVisibility

      public com.nomagic.magicdraw.uml.symbols.PresentationElementVisibility getVisibility()
      Returns:
      element visibility
    • sSetVisibility

      public void sSetVisibility(com.nomagic.magicdraw.uml.symbols.PresentationElementVisibility visibility)
      Sets element visibility flag.
      Parameters:
      visibility - flag value
    • setVisibility

      public void setVisibility(com.nomagic.magicdraw.uml.symbols.PresentationElementVisibility visibility)
      Sets element visibility flag.
      Parameters:
      visibility - flag value
    • removeFromSortManager

      public void removeFromSortManager()
      Removes this OV from sort manager.
    • updateViewAfterPropertyChange

      public void updateViewAfterPropertyChange()
    • updateLater

      public void updateLater()
      Registers this symbol to postponed "update" at the end of current command execution. Symbol will be updated when all other commands are executed. If this is not possible to register, updates symbol immediately.
    • updateLabelsIgnoringSuspendableLater

      public void updateLabelsIgnoringSuspendableLater(Collection<com.nomagic.magicdraw.uml.symbols.shapes.LabelWrapper> wrappers)
    • updateModelByViewInternal

      protected void updateModelByViewInternal()
      Updates model according current view structure. In some cases changes in model must be made keeping in mind current structure of symbols.

      Does nothing here, but subclasses may override

    • updateModelByView

      public final void updateModelByView()
      Updates model according current view structure. In some cases changes in model must be made keeping in mind current structure of symbols.
    • propertyChange

      public void propertyChange(PropertyChangeEvent e)
      Listens for property change it can be: data was edited text box was edited
      Specified by:
      propertyChange in interface PropertyChangeListener
    • handleModelDelete

      protected void handleModelDelete()
      Handles model element delete property Change event. Typical implementation is to delete this symbol from parent.
    • setFont

      public boolean setFont(Font font)
      Sets font for this object view.
      Parameters:
      font - new font.
    • getFont

      public Font getFont()
      Gets font of this object view. It returns font from the project.
      Returns:
      font of the text object.
    • internalGetSpecificFont

      @CheckForNull protected Font internalGetSpecificFont()
    • getHumanType

      public String getHumanType()
      Returns human representation of the data type
      Specified by:
      getHumanType in interface BaseElement
      Overrides:
      getHumanType in class com.nomagic.magicdraw.uml.MDElementImpl
      Returns:
      the name of the data
    • getHumanName

      public String getHumanName()
      Returns human representation of the data type
      Specified by:
      getHumanName in interface BaseElement
      Overrides:
      getHumanName in class com.nomagic.magicdraw.uml.MDElementImpl
      Returns:
      the name of the data
    • askDeleteDataConfirmation

      public boolean askDeleteDataConfirmation()
      Declared as interface with default implementation for subclasses. If some subclasses upon delete may ask about delete data object as well, they have to redefine this method and return true. By default all objects are removed without asking
      Returns:
      confirmation status -- true if asking is necessary, false otherwise
    • getManipulatedElementAt

      @CheckForNull public final PresentationElement getManipulatedElementAt(Point pt)
      Gets manipulated symbol at specified point pt.
      Parameters:
      pt - Point
      Returns:
      manipulate symbol
    • getManipulatedElementAt

      @CheckForNull public PresentationElement getManipulatedElementAt(Point pt, com.nomagic.magicdraw.uml.symbols.IntersectionKind intersectionKind)
      Gets manipulated symbol at specified point pt.
      Parameters:
      pt - Point
      intersectionKind - intersection kind to check for
      Returns:
      manipulate symbol
    • getManipulatedElementAt

      @CheckForNull public PresentationElement getManipulatedElementAt(Point pt, com.nomagic.magicdraw.uml.symbols.SortManagerProvider sortManagerProvider)
      Gets manipulate symbol at specified point pt.
      Parameters:
      pt - Point
      sortManagerProvider - provides sort manager in which to search.
      Returns:
      manipulate symbol
    • sSetParentForAll

      public final void sSetParentForAll(Collection<PresentationElement> elements)
      Sets itself as parent to the all PresentationElement from given vector.
    • hasManipulator

      public boolean hasManipulator()
      Returns true, if view has manipulator (is selectable)
    • invalidate

      public boolean invalidate()
      Invalidates this element.
    • isSnapToGrid

      protected boolean isSnapToGrid()
    • snapToGrid

      public final void snapToGrid(Rectangle r, float step)
      Snap to grid this rectangle
    • snapToGrid

      public final void snapToGrid(Point p, float step)
      Snap to grid this point
    • internalSnapToGrid

      protected void internalSnapToGrid(Point p, float step)
    • snapViewToGrid

      public void snapViewToGrid(float step)
      Snap to grid this point
    • internalSnapToGrid

      protected void internalSnapToGrid(float step)
    • collectSubManipulatedElements

      @OpenApi public final void collectSubManipulatedElements(List<PresentationElement> col)
      Collects all visible and manipulated elements in this hierarchy.
    • getManipulatedPresentationElements

      @OpenApi public final List<PresentationElement> getManipulatedPresentationElements()
      Returns a list of children of this element those have manipulator.
      Returns:
      a list of manipulated elements. Collection is unmodifiable.
    • hasManipulatedPresentationElements

      @OpenApi public final boolean hasManipulatedPresentationElements()
      Returns:
      true if at least one child is manipulated and visible
    • getTolerance

      public final int getTolerance()
      Returns tolerance
    • getNotZoomedTolerance

      protected int getNotZoomedTolerance()
    • atInsert

      public void atInsert()
      Invalidates object at insert
      Specified by:
      atInsert in interface BaseElement
      Overrides:
      atInsert in class com.nomagic.magicdraw.uml.MDElementImpl
    • isDisposed

      public boolean isDisposed()
      Checks if element was explicitly disposed by calling dispose() method. Calling atInsert() clears dispose flag. Newly created element is not disposed.
      Returns:
      true if element was disposed
    • atInsertChildren

      protected void atInsertChildren()
    • sortObjectsByX

      public static void sortObjectsByX(List<? extends PresentationElement> vector)
      Sorts objectViews by x ascending.
      Parameters:
      vector - - Vector which contains Object Views.
    • sortObjectsByY

      public static void sortObjectsByY(List<? extends PresentationElement> vector)
      Sorts objectViews by y in ascending order.
      Parameters:
      vector - - Vector which contains Object Views.
    • isSortable

      public boolean isSortable()
      If OV is sortable (must be added to sort manager for sorting) method must return true;
    • isChildVisible

      public boolean isChildVisible(PresentationElement child)
      Returns true if given child of this object is visible. For methods and attributes Method or Attribute field view can hide objects without changing visibility flag method isVisible() returns true, but method can be not show. This method must avoid such situations and return true if parent shows this object and false if it hides.
    • isVisibleInDiagram

      public boolean isVisibleInDiagram()
      Check if this symbol is visible in diagram (visible itself and its parent is visible)
      Returns:
      true if symbol is visible in the diagram
    • getManipulatedIntersectionWith

      @CheckForNull public List<PresentationElement> getManipulatedIntersectionWith(Rectangle rect)
      Returns vector of manipulated objects whose intersect with given rectangle
    • getManipulatedIntersectionWith

      @CheckForNull public List<PresentationElement> getManipulatedIntersectionWith(Rectangle rect, com.nomagic.magicdraw.uml.symbols.IntersectionKind kind)
      Returns vector of manipulated objects whose intersect with given rectangle
    • getManipulatedIntersectionWith

      @CheckForNull public List<PresentationElement> getManipulatedIntersectionWith(Rectangle rect, boolean completelyCovered)
      Returns vector of manipulated objects whose intersect with given rectangle
      Parameters:
      completelyCovered - take only completely covered by rectangle symbols. Ignore symbols with just intersected bounds.
    • getManipulatedIntersectionWith

      @CheckForNull public List<PresentationElement> getManipulatedIntersectionWith(Rectangle rect, boolean completelyCovered, com.nomagic.magicdraw.uml.symbols.IntersectionKind kind)
      Returns vector of manipulated objects whose intersect with given rectangle
      Parameters:
      completelyCovered - take only completely covered by rectangle symbols. Ignore symbols with just intersected bounds.
      kind - intersection kind to check for
    • findOwnerForElement

      @CheckForNull public com.dassault_systemes.modeler.foundation.model.ModelElement findOwnerForElement(PresentationElement newParent, com.dassault_systemes.modeler.foundation.model.ModelElementOwnershipContext ownershipContext)
    • findOwnerForChildElement

      @CheckForNull public com.dassault_systemes.modeler.foundation.model.ModelElement findOwnerForChildElement(PresentationElement child)
      Returns element owner for given child.
      Returns:
      most suitable owner for given child's element
    • checkElementOwnerOnChange

      public boolean checkElementOwnerOnChange(PresentationElement child)
    • getFillColor

      public Color getFillColor()
      Returns fill color
    • getLineColor

      public Color getLineColor()
      Returns line color
    • canFill

      protected boolean canFill()
      Returns:
      true if symbol can be filled with some color
    • isUseFillColor

      public boolean isUseFillColor()
      Returns:
      use fill color flag
    • isUseFillColorByProperty

      protected boolean isUseFillColorByProperty()
    • getTextColor

      public Color getTextColor()
    • internalGetSpecificTextColor

      @CheckForNull protected Color internalGetSpecificTextColor()
    • setTextColor

      public void setTextColor(Color c)
      Sets text color
    • setFillColor

      public void setFillColor(Color c)
      Sets fill color
    • createFillStrategy

      public com.nomagic.magicdraw.uml.symbols.FillStrategy createFillStrategy()
    • dynamicTextColor

      public Color dynamicTextColor()
    • dynamicLineColor

      public Color dynamicLineColor()
    • dynamicFillColor

      @CheckForNull public Color dynamicFillColor()
    • dynamicStyleFillColor

      @CheckForNull public Color dynamicStyleFillColor(@CheckForNull Color color, boolean useFill)
    • dynamicStyleLineColor

      public final Color dynamicStyleLineColor(Color color)
    • dynamicStyleTextColor

      public final Color dynamicStyleTextColor(Color color)
    • dynamicStyleTransparency

      public final int dynamicStyleTransparency()
    • dynamicStyleTransparency

      public final int dynamicStyleTransparency(Icon target)
    • dynamicTextAlignment

      @CheckForNull public com.nomagic.magicdraw.uml.symbols.shapes.TextObject.HorizontalPosition dynamicTextAlignment(com.nomagic.magicdraw.uml.symbols.shapes.TextObject.HorizontalPosition target)
    • dynamicStyleValue

      @CheckForNull protected <T> T dynamicStyleValue(@CheckForNull T merged, BiFunction<com.dassault_systemes.modeler.foundation.common.style.DynamicStyle,T,T> valueProvider)
    • dynamicPaintShadow

      public boolean dynamicPaintShadow()
    • getDynamicStyleOwner

      @CheckForNull public PresentationElement getDynamicStyleOwner()
    • prepareForShadowDrawing

      protected boolean prepareForShadowDrawing(Graphics2D g)
      Prepares graphics for symbol shadow drawing. If diagram allows shadows, sets darker diagram background color to given graphics.
      Parameters:
      g - the given graphics
    • prepareForLineDrawing

      protected boolean prepareForLineDrawing(Graphics2D g)
      Prepares graphics for line drawing
    • prepareForTextDrawing

      protected void prepareForTextDrawing(Graphics2D g)
      Prepares graphics for text drawing
    • useParentStyle

      @OpenApi public boolean useParentStyle()
      Does this element uses parent style or has it's own?
      Returns:
      true, if element does not have style and uses parent's style.
    • useParentProperties

      @Deprecated(since="2024x Refresh3", forRemoval=true) @OpenApi public boolean useParentProperties()
      Deprecated, for removal: This API element is subject to removal in a future version.
    • getParentSymbolStyleOwner

      @CheckForNull public PresentationElement getParentSymbolStyleOwner()
      Returns parent to which this symbol delegates style attributes related functionality.
      Returns:
      parent symbol to delegate or null if this symbol does not delegate.
    • getPropertyManager

      @OpenApi @Deprecated(since="2024x Refresh3", forRemoval=true) public final PropertyManager getPropertyManager()
      Deprecated, for removal: This API element is subject to removal in a future version.
      Returns the propertyManager of this element. If element does not have properties, empty manager will be created.
      Use method useParentProperties() to check if properties exist.
      Use PresentationElementsManager to change the properties.
      Returns:
      propertyManager of this element.
      See Also:
    • createPresentationElementStyle

      protected com.dassault_systemes.modeler.foundation.diagram.style.PresentationElementStyle createPresentationElementStyle()
      Creates the presentation element style for this presentation element. Override only if a specific style for a specific presentation element should be created. The default implementation is to get style though style registry
    • getStyle

      public com.dassault_systemes.modeler.foundation.diagram.style.PresentationElementStyle getStyle()
    • getProperty

      @CheckForNull @OpenApi @Deprecated(since="2024x Refresh3", forRemoval=true) public final Property getProperty(String propertyId)
      Deprecated, for removal: This API element is subject to removal in a future version.
      use PresentationElementsManager#getProperty(PresentationElement). Will be removed in 2026x version.
      Returns element's property with given id.
      Parameters:
      propertyId - ID of property.
      Returns:
      property with given id or null if element does not have such property.
    • addProperty

      @Deprecated(since="2024x Refresh3", forRemoval=true) @OpenApi public final void addProperty(Property prop)
      Deprecated, for removal: This API element is subject to removal in a future version.
      Add property to a presentation element. This method should be called only on a new instance of a presentation element while it is not added into the diagram. In order to change some property use PresentationElementsManager#setPresentationElementProperties
      Parameters:
      prop - property
    • changeProperties

      public void changeProperties(com.dassault_systemes.modeler.magic.diagram.styledelegates.PresentationElementStyleChanger changer)
    • applyProperties

      public final void applyProperties(com.dassault_systemes.modeler.magic.diagram.styledelegates.PresentationElementStyleChanger changer)
      Applies properties from given property manager
      Parameters:
      manager - new properties
    • internalApplyProperties

      protected void internalApplyProperties(com.dassault_systemes.modeler.magic.diagram.styledelegates.PresentationElementStyleChanger changer)
      Applies properties from given property manager
      Parameters:
      changer - new properties
    • onFontChange

      public void onFontChange()
    • getAdditionalRenderersToNotifyOnPropertiesChange

      public List<com.nomagic.magicdraw.uml.symbols.SymbolDecorator> getAdditionalRenderersToNotifyOnPropertiesChange()
    • silentApply

      public final void silentApply()
      Silently applies all properties after initialization
    • silentApply

      public final void silentApply(boolean recreateListeners)
      Silently applies all properties after initialization
      Parameters:
      recreateListeners - recreate listeners if needed
    • internalSilentApply

      public void internalSilentApply()
      Silently applies all properties after initialization
    • adjustBoundsBeforeChange

      public Rectangle adjustBoundsBeforeChange(Rectangle rec, boolean autosizeOperation, Collection<PresentationElement> movedTogether)
      Validate bounds before bounds change operation
    • adjustChildBoundsForMoving

      public void adjustChildBoundsForMoving(Rectangle bounds, PresentationElement element)
      For adjusting child bounds when child type is not known but bounds should be corrected.
    • adjustChildBounds

      public void adjustChildBounds(Rectangle bounds, PresentationElement element)
      For adjusting child bounds when child type is not known but bounds should be corrected.
    • getEffectiveStyleOwner

      public final PresentationElement getEffectiveStyleOwner()
    • getEffectiveStyleDelegate

      public com.dassault_systemes.modeler.foundation.diagram.style.StylePropertyDelegate getEffectiveStyleDelegate()
      Returns:
      the effective style property delegate, returned from the effective style owner
    • getOwnStyleDelegate

      public com.dassault_systemes.modeler.foundation.diagram.style.StylePropertyDelegate getOwnStyleDelegate()
      Returns:
      the own style property delegate
    • isMovableByMoveManager

      public boolean isMovableByMoveManager()
      Method indicates if object of this instance must be registered in move manager.
    • boundsChanged

      public final void boundsChanged()
    • boundsChanged

      public final void boundsChanged(Rectangle bounds)
    • notifyCreated

      public final void notifyCreated()
      Notify move manager about created presentation element.
    • rememberBounds

      public void rememberBounds()
      Remember old bounds
    • rememberBounds

      public void rememberBounds(Rectangle bounds)
    • editName

      @OpenApi public final void editName(@CheckForNull KeyEvent evt)
      Starts online diagram editing for a symbol
      Parameters:
      evt - first key event or null
    • editName

      @OpenApi public void editName(@CheckForNull KeyEvent evt, @CheckForNull Map<String,Boolean> textEditorOptions)
      Starts online diagram editing for a symbol
      Parameters:
      evt - first key event or null
      textEditorOptions - boolean options for text editor. Passed when creating text editor with TextEditorFactory
    • isLayouting

      public boolean isLayouting()
    • setLayouting

      public void setLayouting(boolean v)
    • getManipulatedParent

      @CheckForNull @OpenApi public final PresentationElement getManipulatedParent()
      Returns:
      first parent with manipulator or null if such does not exist.
    • getManipulationPreferredDimension

      public UnmodifiableDimension getManipulationPreferredDimension()
      Returns:
      size for manipulator manipulations
    • getObjectParent

      @OpenApi public BaseElement getObjectParent()
      Returns the presentation element parent. Implementation of super method.
      Specified by:
      getObjectParent in interface BaseElement
      Overrides:
      getObjectParent in class com.nomagic.magicdraw.uml.MDElementImpl
      Returns:
      the parent of the element.
      See Also:
    • notifyRepaintManager

      public void notifyRepaintManager(boolean boundsChanged)
      Notifies the repaint manager about changes in bounds.
    • notifyDiagramFrameSizeChange

      protected void notifyDiagramFrameSizeChange()
      Notify diagram frame about change in this symbol. Change may be a reason for diagram frame resize.
    • firePropertyChange

      public void firePropertyChange(String propertyName, @CheckForNull Object oldValue, @CheckForNull Object newValue)
      Description copied from interface: BaseElement
      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.
      Specified by:
      firePropertyChange in interface BaseElement
      Overrides:
      firePropertyChange in class com.nomagic.magicdraw.uml.MDElementImpl
      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:
    • setLineColor

      public void setLineColor(Color c)
      Sets line color
    • setUseFillColor

      public void setUseFillColor(boolean use)
      Sets use fill color
    • findPresentationElement

      @CheckForNull public static PresentationElement findPresentationElement(Collection<PresentationElement> elements, com.dassault_systemes.modeler.foundation.model.ModelElement modelElement)
      Finds presentation element with given Element among given elements
    • canChangeElementOwner

      public boolean canChangeElementOwner(Collection<PresentationElement> movedTogether, @CheckForNull BaseElement newParent)
      Returns true, if symbol does not restrict it's element ownership change
      Parameters:
      movedTogether - collection of the elements, whose will change the parent together with this symbol
      newParent - new symbol parent
      Returns:
      true if parent of element can be changed.
    • canChangeParent

      public boolean canChangeParent(Collection<? extends PresentationElement> movedTogether, @CheckForNull BaseElement newParent, boolean changeElementParent)
      Returns true, if element can change parent.
      Parameters:
      movedTogether - collection of the elements, whose will change the parent together with this.
      newParent - new symbol parent
      changeElementParent - change element parent
      Returns:
      true if parent of symbol can be changed
    • canChangeParent

      public final boolean canChangeParent(Collection children, @CheckForNull BaseElement newParent)
      Returns true, if element can change parent.
      Specified by:
      canChangeParent in interface BaseElement
      Overrides:
      canChangeParent in class com.nomagic.magicdraw.uml.MDElementImpl
      Parameters:
      children - collection of the elements, whose will change the parent together with this.
      newParent - new parent object.
      Returns:
      true if an element can change parent.
    • getAssignableModelElementsClasses

      public final Class[] getAssignableModelElementsClasses()
      Returns an array of ModelElements classes that can be assigned as ModelElement to this PresentationElement. The specific PresentationElement must override this method and return an array of specific ModelElements' classes.
      Returns:
      an array of assignable ModelElements' classes.
    • setPropertyManagerName

      public void setPropertyManagerName(@CheckForNull String propertyManagerName)
    • getPropertyManagerName

      @CheckForNull public String getPropertyManagerName()
    • getChildPresentationElementForContextMenu

      public PresentationElement getChildPresentationElementForContextMenu(Point pt)
      Returns child element for showing context menu. Maybe it is better to show context menu for child, not for element itself. In such case returns child.
      Parameters:
      pt - the point
      Returns:
      child or itself.
    • isCanChildrenChangeEdge

      public boolean isCanChildrenChangeEdge()
    • getBoundsWithChildrenOnEdge

      public Rectangle getBoundsWithChildrenOnEdge()
    • getElementToConnectRelationship

      @CheckForNull public final Element getElementToConnectRelationship(@CheckForNull Element relationship, boolean asClient)
      The same as #internalGetElementToConnectRelationship(Element, boolean), just takes into account SymbolDecorators
      Returns:
      all possible elements
      See Also:
    • getModelElementToConnectRelationship

      @CheckForNull public final com.dassault_systemes.modeler.foundation.model.ModelElement getModelElementToConnectRelationship(@CheckForNull com.dassault_systemes.modeler.foundation.model.ModelElement relationship, boolean asClient)
      The same as internalGetModelElementToConnectRelationship(ModelElement, boolean), just takes into account SymbolDecorators
      Returns:
      all possible elements
    • isSuitableToConnectRelationship

      public final boolean isSuitableToConnectRelationship(com.dassault_systemes.modeler.foundation.model.RelationshipEnd end)
      Returns:
      true if given possible elements (end of relationship) is suitable to connect given relationship to this symbol
    • internalGetModelElementToConnectRelationship

      @CheckForNull public com.dassault_systemes.modeler.foundation.model.ModelElement internalGetModelElementToConnectRelationship(@CheckForNull com.dassault_systemes.modeler.foundation.model.ModelElement relationship, boolean asClient)
      Returns element that should be used for given relationship connecting. All possible elements are returned by method getModelElementsForRelationshipConnecting().
      Returns:
      all possible elements
      See Also:
    • internalIsSuitableToConnectRelationship

      public boolean internalIsSuitableToConnectRelationship(com.dassault_systemes.modeler.foundation.model.RelationshipEnd<?> end)
      Returns:
      true if given possible elements (end of relationship) is suitable to connect given relationship to this symbol
    • internalIsSuitableToConnectRelationship

      public static boolean internalIsSuitableToConnectRelationship(PresentationElement symbol, com.dassault_systemes.modeler.foundation.model.RelationshipEnd<?> end)
    • getModelElementToMove

      @CheckForNull public com.dassault_systemes.modeler.foundation.model.ModelElement getModelElementToMove()
      Returns element that should be used for during "move" operation. In most cases this is the same as getElement(), but some symbols maybe override and return some other related element.
      Returns:
      element to move
      See Also:
    • getElementsForRelationshipConnecting

      public final Collection<? extends Element> getElementsForRelationshipConnecting()
      The same as getElementsForLinkConnecting(), just takes into account SymbolDecorators
      Returns:
      all possible elements
      See Also:
    • getModelElementsForRelationshipConnecting

      public final Collection<? extends com.dassault_systemes.modeler.foundation.model.ModelElement> getModelElementsForRelationshipConnecting()
      Returns all possible element that can be used for relationships connecting.
      Returns:
      all possible elements
    • internalGetModelElementsForRelationshipConnecting

      public Collection<? extends com.dassault_systemes.modeler.foundation.model.ModelElement> internalGetModelElementsForRelationshipConnecting()
      Returns all possible element that can be used for some relationship connecting.
      Returns:
      all possible elements
    • internalGetModelElementsForRelationshipConnecting

      public static Collection<? extends com.dassault_systemes.modeler.foundation.model.ModelElement> internalGetModelElementsForRelationshipConnecting(PresentationElement symbol)
    • isCreateElementListener

      protected boolean isCreateElementListener()
    • setCreateElementListener

      public void setCreateElementListener(boolean createElementListener)
    • createPropertyChangeListener

      public final void createPropertyChangeListener()
    • internalCreatePropertyChangeListener

      protected void internalCreatePropertyChangeListener(com.nomagic.magicdraw.uml.symbols.PresentationElement.SmartListenerConfigData data)
    • recreateListeners

      public void recreateListeners()
      Recreates model listeners for this symbol. This method should be called only in exceptional cases when new features to the symbol are added dynamically (e.g. decorators) and model listening scope should be expanded.
    • getConfiguration

      protected final SmartListenerConfig getConfiguration()
      Returns:
      a merged configuration of both static and dynamic configs
    • getDynamicConfigurations

      protected List<SmartListenerConfig> getDynamicConfigurations()
      Gets non-cacheable smart listener configurations. Default symbol smart listeners are cacheable and reused in all instances of a symbol. Dynamic parts of symbols (e.g. added via renderers and decorators) should use dynamic configurations.
      Returns:
      a list of dynamic smart listener configurations.
    • disposePropertyChangeListener

      protected void disposePropertyChangeListener()
    • updateAfterLoad

      public void updateAfterLoad()
    • createSmartListenerConfig

      protected void createSmartListenerConfig(List<SmartListenerConfig> configurations)
    • isShowElementTypeAsLabel

      public boolean isShowElementTypeAsLabel()
    • isShowsProxy

      public boolean isShowsProxy()
    • clearShowsProxy

      public void clearShowsProxy()
    • checkShowsProxy

      protected boolean checkShowsProxy()
    • setLoadedVisibility

      public final void setLoadedVisibility(boolean visible)
    • checkProxyVisibility

      protected com.nomagic.magicdraw.uml.symbols.PresentationElementVisibility checkProxyVisibility(com.nomagic.magicdraw.uml.symbols.PresentationElementVisibility visibility)
    • beforeDelete

      public boolean beforeDelete(com.dassault_systemes.modeler.foundation.editing.CompositeCommand deleteCommand, Collection removeTogether)
      Method is called before deleting symbol with user "DELETE" action
      Parameters:
      removeTogether - other symbols participating in delete operation
      Returns:
      true, if symbol can be deleted
    • tryToDeleteModelElementUponRemoval

      public boolean tryToDeleteModelElementUponRemoval()
      Override this method if you do not want model element to be deleted upon symbol deletion.
      Returns:
      true, if model element has to be deleted.
    • alwaysShowTooltip

      public boolean alwaysShowTooltip()
    • getBoundsShape

      @OpenApi @CheckForNull public final Shape getBoundsShape(ConverterToShape converterToShape)
      Provides a bounding shape of the symbol
      Parameters:
      converterToShape - transform bounding shape according this converter
      Returns:
      bounding shape of the symbol
    • internalGetBoundsShape

      @CheckForNull public Shape internalGetBoundsShape(ConverterToShape converterToShape)
    • getPresentationElementStroke

      @OpenApi public final BasicStroke getPresentationElementStroke()
      Return a stroke used to paint symbol's main part
      Returns:
      a stroke used to paint symbol's main part
    • isContentHidden

      public boolean isContentHidden()
    • setLineWidth

      public void setLineWidth(int width)
    • getLineWidth

      public int getLineWidth()
    • dynamicLineWidth

      public int dynamicLineWidth()
    • dynamicLineWidth

      public int dynamicLineWidth(int width)
    • getPresentationElementStroke

      @OpenApi public final BasicStroke getPresentationElementStroke(int width)
      Return a stroke used to paint symbol's main part
      Parameters:
      width - a custom stroke width. Other stroke parameters will be specific to symbol
      Returns:
      a stroke used to paint symbol's main part
    • dynamicStroke

      public final BasicStroke dynamicStroke()
    • dynamicStroke

      public BasicStroke dynamicStroke(int width)
    • dynamicStroke

      public BasicStroke dynamicStroke(BasicStroke stroke)
    • internalGetPresentationElementStroke

      public BasicStroke internalGetPresentationElementStroke(int width)
      Return a stroke used to paint symbol's main part
      Parameters:
      width - a custom stroke width. Other stroke parameters will be specific to symbol
      Returns:
      a stroke used to paint symbol's main part
    • getStroke

      @OpenApi public static BasicStroke getStroke(BasicStroke stroke, int width)
      Get cached stroke of given width.
      Parameters:
      stroke - base stroke.
      width - of the stroke.
      Returns:
      stroke
    • getStroke

      @OpenApi public static BasicStroke getStroke(int lineStyle)
      Get cached stroke of given style and default width.
      Parameters:
      lineStyle - style of line.
      Returns:
      stroke
      See Also:
    • getStroke

      @OpenApi public static BasicStroke getStroke(int lineStyle, int width)
      Get cached stroke of given style and width.
      Parameters:
      lineStyle - style of line
      width - width
      Returns:
      stroke
      See Also:
    • getStroke

      @OpenApi public static BasicStroke getStroke(int lineStyle, int width, int join)
      Get cached stroke of given style, width and join.
      Parameters:
      lineStyle - style of line
      width - width
      Returns:
      stroke
      See Also:
    • getStroke

      @OpenApi public static BasicStroke getStroke(int lineStyle, int width, int join, int cap)
      Get cached stroke of given style, width and join.
      Parameters:
      lineStyle - style of line
      width - width
      Returns:
      stroke
      See Also:
    • getStroke

      @OpenApi public static BasicStroke getStroke(float width, int cap, int join, float miterLimit, @CheckForNull float[] dash, float dash_phase)
      Get cached stroke.
      See Also:
    • getChildrenWithSymbolProperties

      public List<PresentationElement> getChildrenWithSymbolProperties()
    • isPreserveProportionsWhenGrowing

      public boolean isPreserveProportionsWhenGrowing()
      Controls if the symbol should preserve proportions when growing.
      Returns:
      true if proportions should be preserved, false otherwise.
    • setDummyResizeMode

      public boolean setDummyResizeMode(boolean b)
      In dummy resize mode symbol may not resize according it children or move children on bounds changed and etc. This is more as hack for resize problems during load or diagram layout
      Parameters:
      b - new value
    • getCenterlinePoint

      @CheckForNull public Point getCenterlinePoint()
      Gets a point for centerline drawing.
      Returns:
      centerline point.
    • getCenterlinePointX

      public int getCenterlinePointX()
      Gets x coordinate for centerline drawing.
      Returns:
      x coordinate for centerline.
    • getCenterlinePointY

      public int getCenterlinePointY()
      Gets y coordinate for centerline drawing.
      Returns:
      y coordinate for centerline.
    • getProjectImpl

      @Deprecated(since="2024x Refresh3", forRemoval=true) public Project getProjectImpl()
      Deprecated, for removal: This API element is subject to removal in a future version.
      use Project.getProject(BaseElement). Will be removed in 2026x.
      This method is deprecated and will be removed soon.
      Specified by:
      getProjectImpl in interface MDElement
      Overrides:
      getProjectImpl in class com.nomagic.magicdraw.uml.MDElementImpl
      Returns:
      project
    • setNeedRecreateListeners

      public void setNeedRecreateListeners(boolean needRecreateListeners)
      Set a need to recreated models listeners flag
      Parameters:
      needRecreateListeners - a new value
    • isNotNull

      public boolean isNotNull(@CheckForNull Element element)
    • getModelElement

      @CheckForNull public com.dassault_systemes.modeler.foundation.model.ModelElement getModelElement()
    • sSetModelElement

      public void sSetModelElement(@CheckForNull com.dassault_systemes.modeler.foundation.model.ModelElement element)
    • setModelElement

      public void setModelElement(@CheckForNull com.dassault_systemes.modeler.foundation.model.ModelElement element)