예제 #1
0
        internal NoteViewModel(ActorViewModel[] actors, SequenceNotePlacement placement, string message)
            : base(message)
        {
            Actors    = actors;
            Placement = placement;

            if (actors.Length > 1 && actors[0] == actors[1])
            {
                throw new ArgumentException(nameof(actors), "Note should overlap two different actors");
            }
        }
예제 #2
0
 /// <summary>
 /// Adds a note.
 /// </summary>
 /// <param name="actors"></param>
 /// <param name="placement"></param>
 /// <param name="message"></param>
 public void AddNote(ActorViewModel[] actors, SequenceNotePlacement placement, string message)
 {
     if (actors == null)
     {
         throw new ArgumentNullException(nameof(actors));
     }
     if (message == null)
     {
         throw new ArgumentNullException(nameof(message));
     }
     Annotations.Add(new NoteViewModel(actors, placement, message));
 }
예제 #3
0
            public override SequenceDiagramViewModel VisitNote([NotNull] NoteContext context)
            {
                // Extract actors
                ActorViewModel[] actors = GetActors(context.actor(), context.actorPair());
                if (actors == null || actors.Any(a => a == null))
                {
                    m_errorListener.GrammarError("Notes must be declared relative to an actor. e.g. Note left of A: Message");
                    return(null);
                }

                // Extract placement of note
                SequenceNotePlacement placement = GetPlacement(context.placement());

                // Extract the note's message
                string message = GetMessage(context.message());

                // Combine into a note
                SequenceDiagram.AddNote(actors, placement, message);
                return(SequenceDiagram);
            }