public static List<Tile> buildSeveral( Iterator<Event> it, TileArguments tileArguments, Tile parent) { final List<Tile> tiles = new ArrayList<Tile>(); while (it.hasNext()) { final Event ev = it.next(); for (Tile tile : TileBuilder.buildOne(it, tileArguments, ev, parent)) { tiles.add(tile); final Real tmpMax = tile.getMaxX(tileArguments.getStringBounder()); } } return Collections.unmodifiableList(tiles); }
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; }