Class AnnotationManager

java.lang.Object
com.dassault_systemes.modeler.foundation.project.service.ModelElementProjectService<Project>
com.nomagic.magicdraw.core.project.service.ProjectService
com.nomagic.magicdraw.annotation.AnnotationManager
All Implemented Interfaces:
com.dassault_systemes.modeler.foundation.project.service.DisposableService, ProjectProvider

@OpenApiAll public final class AnnotationManager extends com.nomagic.magicdraw.core.project.service.ProjectService implements ProjectProvider
Handles annotations visualization on diagrams and other UI components. It takes care of drawing decorations around symbols with annotations and provides annotation actions for manipulators. Users are responsible for adding annotations and removing added annotations afterwards. Users is responsible to call update() method when some annotation is added or removed.
  • Method Details

    • addAnnotationParentTargetProvider

      public static void addAnnotationParentTargetProvider(AnnotationTargetParentProvider provider)
    • removeAnnotationParentTargetProvider

      public static void removeAnnotationParentTargetProvider(AnnotationTargetParentProvider provider)
    • getInstance

      public static AnnotationManager getInstance(BaseElement element)
    • getInstance

      public static AnnotationManager getInstance(Project project)
    • add

      public boolean add(Annotation annotation)
      Add single annotation. Annotation may not be visible until the update() method has been called.
      Parameters:
      annotation - annotation to add
      Returns:
      true if annotation was added, false if such annotation already exists
    • add

      public boolean add(Annotation annotation, AnnotationCategory category)
      Add single annotation. Annotation may not be visible until the update() method has been called.
      Parameters:
      annotation - annotation to add
      category - category to which this annotation belongs. Each category can be part of various AnnotationSubsets
      Returns:
      true if annotation was added, false if such annotation already exists
    • remove

      public boolean remove(Annotation annotation)
      Remove single annotation. Changes may not be visible until the update() method has been called.
      Parameters:
      annotation - annotation to remove
      Returns:
      true if annotation was removed, false if such annotation was not added before
    • hasAnnotatedChildren

      public boolean hasAnnotatedChildren(@CheckForNull BaseElement element)
      Test if given element has children (recursively) with some annotations.
      Parameters:
      element - given element
      Returns:
      true if there are at least one annotated child of given element
    • hasAnnotatedChildren

      public boolean hasAnnotatedChildren(@CheckForNull BaseElement element, AnnotationSubset subset)
      Test if given element has children (recursively) with some annotations.
      Parameters:
      element - given element
      subset - subset (part) of all currently registered annotations to check.
      Returns:
      true if there are at least one annotated child of given element
    • getAnnotationsOfChildren

      public List<Annotation> getAnnotationsOfChildren(BaseElement element)
    • getAnnotationsOfChildren

      public List<Annotation> getAnnotationsOfChildren(BaseElement element, AnnotationSubset subset)
      Get all annotations of children of given element. Also includes informationFlows for given element.
      Parameters:
      element - given element
      subset - subset (part) of all currently registered children annotations to retrieve
      Returns:
      list of annotations sorted by severity.
    • getAnnotationsOfHiddenChildren

      public List<Annotation> getAnnotationsOfHiddenChildren(PresentationElement view)
      Get all annotations of closest hidden children(recursively) of given symbol. Also includes InformationFlows of given element, that has conveyed Info.
      Parameters:
      view - symbol of starting PE. dedicated to find closest hidden elements for diagrams.
      Returns:
      list of annotations sorted by severity.
    • getAnnotationsOfHiddenChildren

      public List<Annotation> getAnnotationsOfHiddenChildren(PresentationElement view, AnnotationSubset subset)
      Get all annotations of closest hidden children(recursively) of given symbol. Also includes InformationFlows of given element, that has conveyed Info.
      Parameters:
      view - symbol of starting PE. dedicated to find closest hidden elements for diagrams.
      subset - subset (part) of all currently registered hidden children annotations to check.
      Returns:
      list of annotations sorted by severity.
    • getAnnotations

      public List<Annotation> getAnnotations(BaseElement element)
      Get all annotations for particular element.
      Parameters:
      element - element to get annotations for
      Returns:
      unmodifiable list of annotations
    • getAnnotations

      public List<Annotation> getAnnotations(BaseElement element, AnnotationSubset subset)
      Parameters:
      element - element to get annotations for
      subset - subset (part) of all currently registered annotations to retrieve.
      Returns:
      unmodifiable subset of element's annotations
    • getAnnotations

      public List<Annotation> getAnnotations(Object target)
    • getAnnotations

      public List<Annotation> getAnnotations(Object target, AnnotationSubset subset)
    • hasAnnotations

      public boolean hasAnnotations(BaseElement element, AnnotationSubset subset)
      Returns:
      true if there is one or more annotation added for the given element
    • hasAnnotations

      public boolean hasAnnotations(Object target, AnnotationSubset subset)
    • update

      public void update()
      Repaint opened diagrams and active browser tree. Fires updated event to registered listeners.
    • update

      public void update(boolean repaintBrowserTree)
      Repaint opened diagrams and (optionally) active browser tree. Fires updated event to registered listeners.
      Parameters:
      repaintBrowserTree - true to repaint active browser tree (e.g. containment).
    • disposeService

      public void disposeService()
      Description copied from class: com.dassault_systemes.modeler.foundation.project.service.ModelElementProjectService
      Designed to be overridden in derived classes
      Specified by:
      disposeService in interface com.dassault_systemes.modeler.foundation.project.service.DisposableService
      Overrides:
      disposeService in class com.dassault_systemes.modeler.foundation.project.service.ModelElementProjectService<Project>
    • getProject

      public static Project getProject(Object annotationTarget)
      Used to retrieve project from element or parent target providers if given object is not element.
      Parameters:
      annotationTarget - annotation target
      Returns:
      project which annotation target exists in
    • getAnnotatedElements

      public Collection<BaseElement> getAnnotatedElements()
      Returns a collection of annotated elements
      Returns:
      all annotated elements
    • getAnnotatedElements

      public Collection<BaseElement> getAnnotatedElements(AnnotationSubset subset)
      Returns a collection of annotated elements
      Parameters:
      subset - subset (part) of all currently registered annotations to take into account.
      Returns:
      elements that have registered annotations belonging to the given subset
    • getAnnotatedTargets

      public Set<Object> getAnnotatedTargets(AnnotationSubset subset)
      Returns targets of the registered annotations.
      Parameters:
      subset - subset (part) of all currently registered annotations to take into account.
      Returns:
      all targets that have registered annotations belonging to the given subset
    • getIteratorOfAnnotatedElements

      public Iterator<BaseElement> getIteratorOfAnnotatedElements(@CheckForNull BaseElement owner)
      Returns a collection of annotated elements
      Returns:
      all annotated elements
    • update

      public void update(Collection<? extends Annotation> removed, Collection<Annotation> added)
      Updates annotation manager using specified data. No need to call update() method.
      Parameters:
      removed - collection of removed annotations.
      added - collection of added annotations.
    • update

      public void update(Collection<? extends Annotation> removed, Collection<Annotation> added, AnnotationCategory category)
      Updates annotation manager using specified data. No need to call update() method.
      Parameters:
      removed - collection of removed annotations.
      added - collection of added annotations.
      category - category to which annotations belongs
    • addListener

      public void addListener(AnnotationManagerListener listener)
    • removeListener

      public void removeListener(AnnotationManagerListener listener)
    • hasAnnotations

      public boolean hasAnnotations()
    • getIteratorOfAnnotationsOfChildren

      public Iterator<Annotation> getIteratorOfAnnotationsOfChildren(BaseElement element)
    • getIteratorOfAnnotationsOfChildren

      public Iterator<Annotation> getIteratorOfAnnotationsOfChildren(BaseElement element, AnnotationSubset subset)
    • registerSubset

      public void registerSubset(AnnotationSubset subset)
      Register subset (part) of annotations. This enables caching annotations by all the containing subsets. Only subsets, registered using this method, should be be used when retrieving annotations from the manager.
    • unregisterSubset

      public void unregisterSubset(AnnotationSubset subset)
    • getProject

      public Project getProject()
      Specified by:
      getProject in interface ProjectProvider