private ArrowConfiguration getArrowType(MessageExo m) {
    final MessageExoType type = m.getType();
    ArrowConfiguration result = null;

    if (type.getDirection() == 1) {
      result = m.getArrowConfiguration();
    } else {
      result = m.getArrowConfiguration().reverse();
    }
    result = result.withDecoration1(m.getArrowConfiguration().getDecoration1());
    result = result.withDecoration2(m.getArrowConfiguration().getDecoration2());
    return result;
    // ArrowConfiguration result = null;
    // if (type.getDirection() == 1) {
    // result = ArrowConfiguration.withDirectionNormal();
    // } else {
    // result = ArrowConfiguration.withDirectionReverse();
    // }
    // if (m.getArrowConfiguration().isDotted()) {
    // result = result.withDotted();
    // }
    // if (m.getArrowConfiguration().isAsync()) {
    // result = result.withHead(ArrowHead.ASYNC);
    // }
    // result = result.withPart(m.getArrowConfiguration().getPart());
    // return result;
  }
 private Display getLabelOfMessage(MessageExo message) {
   if (message.getMessageNumber() == null) {
     return message.getLabel();
   }
   Display result = Display.empty();
   result = result.add(new MessageNumber(message.getMessageNumber()));
   result = result.addAll(message.getLabel());
   return result;
 }
  Step1MessageExo(
      ParticipantRange range,
      StringBounder stringBounder,
      MessageExo message,
      DrawableSet drawingSet,
      Frontier freeY) {
    super(range, stringBounder, message, drawingSet, freeY);

    setConfig(getArrowType(message));

    this.messageArrow =
        new MessageExoArrow(
            freeY.getFreeY(range),
            drawingSet.getSkin(),
            drawingSet
                .getSkin()
                .createComponent(
                    ComponentType.ARROW,
                    getConfig(),
                    drawingSet.getSkinParam(),
                    getLabelOfMessage(message)),
            getLivingParticipantBox(),
            message.getType(),
            message.getUrl(),
            message.isShortArrow(),
            message.getArrowConfiguration());

    if (message.getNote() != null) {
      final ISkinParam skinParam =
          new SkinParamBackcolored(drawingSet.getSkinParam(), message.getSpecificBackColor());
      setNote(
          drawingSet
              .getSkin()
              .createComponent(ComponentType.NOTE, null, skinParam, message.getNote()));
      // throw new UnsupportedOperationException();
    }
  }
示例#4
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;
  }