Пример #1
0
  protected final void beforeMessage(LifeEvent n, final double pos) {
    final Participant p = n.getParticipant();
    final LifeLine line = drawingSet.getLivingParticipantBox(p).getLifeLine();

    if (n.getType() != LifeEventType.ACTIVATE) {
      return;
    }
    assert n.getType() == LifeEventType.ACTIVATE;

    int delta = 0;
    if (message.isCreate()) {
      delta += 10;
    }
    line.addSegmentVariation(LifeSegmentVariation.LARGER, pos + delta, n.getSpecificBackColor());
  }
Пример #2
0
  protected final void afterMessage(StringBounder stringBounder, LifeEvent n, final double pos) {
    final Participant p = n.getParticipant();
    final LifeLine line = drawingSet.getLivingParticipantBox(p).getLifeLine();

    if (n.getType() == LifeEventType.ACTIVATE || n.getType() == LifeEventType.CREATE) {
      return;
    }

    if (n.getType() == LifeEventType.DESTROY) {
      final Component comp =
          drawingSet
              .getSkin()
              .createComponent(ComponentType.DESTROY, drawingSet.getSkinParam(), null);
      final double delta = comp.getPreferredHeight(stringBounder) / 2;
      final LifeDestroy destroy =
          new LifeDestroy(
              pos - delta, drawingSet.getLivingParticipantBox(p).getParticipantBox(), comp);
      drawingSet.addEvent(n, destroy);
    } else if (n.getType() != LifeEventType.DEACTIVATE) {
      throw new IllegalStateException();
    }

    line.addSegmentVariation(LifeSegmentVariation.SMALLER, pos, n.getSpecificBackColor());
  }
Пример #3
0
  public static List<Tile> buildOne(
      Iterator<Event> it, TileArguments tileArguments, final Event ev, Tile parent) {

    final StringBounder stringBounder = tileArguments.getStringBounder();
    final Skin skin = tileArguments.getSkin();
    final ISkinParam skinParam = tileArguments.getSkinParam();
    final LivingSpaces livingSpaces = tileArguments.getLivingSpaces();

    final List<Tile> tiles = new ArrayList<Tile>();
    // System.err.println("TileBuilder::buildOne " + ev);
    if (ev instanceof Message) {
      final Message msg = (Message) ev;
      final LivingSpace livingSpace1 = livingSpaces.get(msg.getParticipant1());
      final LivingSpace livingSpace2 = livingSpaces.get(msg.getParticipant2());
      boolean reverse = false;
      Tile result = null;
      if (msg.isSelfMessage()) {
        result = new CommunicationTileSelf(livingSpace1, msg, skin, skinParam, livingSpaces);
      } else {
        // System.err.println("msg=" + msg);
        result = new CommunicationTile(livingSpace1, livingSpace2, msg, skin, skinParam);
        reverse = ((CommunicationTile) result).isReverse(stringBounder);
      }
      for (NoteOnMessage noteOnMessage : msg.getNoteOnMessages()) {
        final NotePosition notePosition = noteOnMessage.getNotePosition();
        if (notePosition == NotePosition.LEFT) {
          result =
              new CommunicationTileNoteLeft(
                  (TileWithUpdateStairs) result,
                  msg,
                  skin,
                  skinParam,
                  reverse ? livingSpace2 : livingSpace1,
                  noteOnMessage);
        } else if (notePosition == NotePosition.RIGHT && msg.isSelfMessage()) {
          result =
              new CommunicationTileSelfNoteRight(
                  (CommunicationTileSelf) result, msg, skin, skinParam, noteOnMessage);
        } else if (notePosition == NotePosition.RIGHT) {
          result =
              new CommunicationTileNoteRight(
                  (TileWithUpdateStairs) result,
                  msg,
                  skin,
                  skinParam,
                  reverse ? livingSpace1 : livingSpace2,
                  noteOnMessage);
        }
      }
      tiles.add(result);
    } else if (ev instanceof MessageExo) {
      final MessageExo exo = (MessageExo) ev;
      final LivingSpace livingSpace1 = livingSpaces.get(exo.getParticipant());
      Tile result = null;
      result = new CommunicationExoTile(livingSpace1, exo, skin, skinParam, tileArguments);
      for (NoteOnMessage noteOnMessage : exo.getNoteOnMessages()) {
        final NotePosition notePosition = exo.getNoteOnMessages().get(0).getNotePosition();
        if (notePosition == NotePosition.LEFT) {
          result =
              new CommunicationTileNoteLeft(
                  (TileWithUpdateStairs) result, exo, skin, skinParam, livingSpace1, noteOnMessage);
        } else if (notePosition == NotePosition.RIGHT) {
          result =
              new CommunicationTileNoteRight(
                  (TileWithUpdateStairs) result, exo, skin, skinParam, livingSpace1, noteOnMessage);
        }
      }
      tiles.add(result);
    } else if (ev instanceof Note) {
      final Note note = (Note) ev;
      final LivingSpace livingSpace1 = livingSpaces.get(note.getParticipant());
      final LivingSpace livingSpace2 =
          note.getParticipant2() == null ? null : livingSpaces.get(note.getParticipant2());
      tiles.add(new NoteTile(livingSpace1, livingSpace2, note, skin, skinParam));
    } else if (ev instanceof Notes) {
      final Notes notes = (Notes) ev;
      tiles.add(new NotesTile(livingSpaces, notes, skin, skinParam));
    } else if (ev instanceof Divider) {
      final Divider divider = (Divider) ev;
      tiles.add(new DividerTile(divider, tileArguments));
    } else if (ev instanceof GroupingStart) {
      final GroupingStart start = (GroupingStart) ev;
      tiles.add(new EmptyTile(4, tileArguments));
      tiles.add(
          new GroupingTile(
              it,
              start,
              tileArguments.withBackColorGeneral(
                  start.getBackColorElement(), start.getBackColorGeneral()),
              tileArguments));
      tiles.add(new EmptyTile(4, tileArguments));
      // tiles.add(TileUtils.withMargin(tile, 0, 0, 4, 4);
    } else if (ev instanceof GroupingLeaf && ((GroupingLeaf) ev).getType() == GroupingType.ELSE) {
      final GroupingLeaf anElse = (GroupingLeaf) ev;
      tiles.add(new ElseTile(anElse, skin, skinParam, parent));
    } else if (ev instanceof Reference) {
      final Reference ref = (Reference) ev;
      tiles.add(new ReferenceTile(ref, tileArguments.withBackColor(ref)));
    } else if (ev instanceof Delay) {
      final Delay delay = (Delay) ev;
      tiles.add(new DelayTile(delay, tileArguments));
    } else if (ev instanceof HSpace) {
      final HSpace hspace = (HSpace) ev;
      tiles.add(new HSpaceTile(hspace, tileArguments));
    } else if (ev instanceof LifeEvent) {
      final LifeEvent lifeEvent = (LifeEvent) ev;
      final LivingSpace livingSpace = livingSpaces.get(lifeEvent.getParticipant());
      tiles.add(new LifeEventTile(lifeEvent, tileArguments, livingSpace, skin, skinParam));
    } else {
      System.err.println("TileBuilder::Ignoring " + ev.getClass());
    }
    return tiles;
  }