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"); } }
/// <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)); }
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); }