Пример #1
0
 public boolean step() throws SyntaxError {
   Note note = diagram.getDataProvider().getNote();
   if (note != null) {
     freeNoteNumber = Math.max(freeNoteNumber, note.getNumber() + 1);
     diagram.getPaintDevice().addSequenceElement(note);
     notes.add(note);
     closeNote(note.getLocation().getName());
     diagram.getFragmentManager().openFragments();
     diagram.getPaintDevice().announce(note.getHeight());
     note.setTop(diagram.getVerticalPosition());
     if (note.isConsuming()) {
       diagram.extendLifelines(note.getHeight());
     } else {
       pendingNotes.put(note.getLocation().getName(), note);
     }
     if (diagram.getDataProvider().getState() != null) {
       diagram.addToStateMap(note, diagram.getDataProvider().getState());
     }
     diagram.getFragmentManager().clearLabels();
     return true;
   }
   Pair<Lifeline, Integer> eventAssoc = diagram.getDataProvider().getEventAssociation();
   if (eventAssoc != null) {
     associateEvent(eventAssoc.getFirst(), eventAssoc.getSecond());
     return true;
   }
   return false;
 }
Пример #2
0
 private void associateEvent(Lifeline line, int descriptionNumber) {
   List<Pair<Lifeline, Integer>> pairs = eventAssociation.get(descriptionNumber);
   if (pairs == null) {
     pairs = new LinkedList<Pair<Lifeline, Integer>>();
     eventAssociation.put(descriptionNumber, pairs);
   }
   pairs.add(new Pair<Lifeline, Integer>(line, diagram.getVerticalPosition()));
 }
Пример #3
0
 /**
  * @param lifeline the name of a lifeline that may have a non-consuming note box associated to it
  */
 void closeNote(String lifeline) {
   Note note = pendingNotes.get(lifeline);
   if (note != null) {
     int diff = note.getTop() + note.getHeight() - diagram.getVerticalPosition();
     if (diff > 0) {
       diagram.extendLifelines(diff);
     }
     pendingNotes.remove(lifeline);
   }
 }