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; }
public void computeArrowAssociations() { for (Note description : notes) { List<Message> msgs = messageAssociation.get(description.getNumber()); if (msgs != null) { for (Message msg : msgs) { // This can be a pseudo-message ("_") that returns // the control flow to an object. // We just ignore the attempt to uselessly associate a // note to this. if (msg.getArrow() != null) { description.addTarget(msg.getArrow().getAnchor()); } } } List<Pair<Lifeline, Integer>> pairs = eventAssociation.get(description.getNumber()); if (pairs != null) { for (Pair<Lifeline, Integer> pair : pairs) { int x = pair.getFirst().getView().getLeft() + pair.getFirst().getView().getWidth() / 2; Point p = new Point(x, pair.getSecond()); description.addTarget(p); } } } }