net.sourceforge.plantuml.sequencediagram.teoz.CommunicationTileNoteBottomTopAbstract Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of plantuml-mit Show documentation
Show all versions of plantuml-mit Show documentation
PlantUML is a component that allows to quickly write diagrams from text.
// THIS FILE HAS BEEN GENERATED BY A PREPROCESSOR.
package net.sourceforge.plantuml.sequencediagram.teoz;
import net.sourceforge.plantuml.klimt.UStroke;
import net.sourceforge.plantuml.klimt.UTranslate;
import net.sourceforge.plantuml.klimt.color.HColor;
import net.sourceforge.plantuml.klimt.drawing.UGraphic;
import net.sourceforge.plantuml.klimt.font.StringBounder;
import net.sourceforge.plantuml.klimt.geom.XDimension2D;
import net.sourceforge.plantuml.klimt.shape.ULine;
import net.sourceforge.plantuml.real.Real;
import net.sourceforge.plantuml.sequencediagram.AbstractMessage;
import net.sourceforge.plantuml.sequencediagram.Event;
import net.sourceforge.plantuml.sequencediagram.Note;
import net.sourceforge.plantuml.skin.Component;
import net.sourceforge.plantuml.skin.ComponentType;
import net.sourceforge.plantuml.skin.rose.Rose;
import net.sourceforge.plantuml.style.ISkinParam;
import net.sourceforge.plantuml.style.PName;
import net.sourceforge.plantuml.style.SName;
import net.sourceforge.plantuml.style.Style;
import net.sourceforge.plantuml.style.StyleSignatureBasic;
public abstract class CommunicationTileNoteBottomTopAbstract extends AbstractTile {
protected final Tile tile;
protected final AbstractMessage message;
protected final Rose skin;
protected final ISkinParam skinParam;
protected final Note noteOnMessage;
private final YGauge yGauge;
final public Event getEvent() {
return message;
}
@Override
final public double getContactPointRelative() {
return tile.getContactPointRelative();
}
public CommunicationTileNoteBottomTopAbstract(Tile tile, AbstractMessage message, Rose skin, ISkinParam skinParam,
Note noteOnMessage, YGauge currentY) {
super(((AbstractTile) tile).getStringBounder(), currentY);
this.tile = tile;
this.message = message;
this.skin = skin;
this.skinParam = skinParam;
this.noteOnMessage = noteOnMessage;
this.yGauge = YGauge.create(currentY.getMax(), getPreferredHeight());
}
@Override
public YGauge getYGauge() {
return yGauge;
}
@Override
final protected void callbackY_internal(TimeHook y) {
super.callbackY_internal(y);
tile.callbackY(y);
}
final protected Component getComponent(StringBounder stringBounder) {
final Component comp = skin.createComponentNote(noteOnMessage.getUsedStyles(), ComponentType.NOTE,
noteOnMessage.getSkinParamBackcolored(skinParam), noteOnMessage.getDisplay(),
noteOnMessage.getColors());
return comp;
}
final protected Real getNotePosition(StringBounder stringBounder) {
final Real minX = tile.getMinX();
return minX;
}
protected final double spacey = 10;
protected final void drawLine(UGraphic ug, double x1, double y1, double x2, double y2) {
final Style style = StyleSignatureBasic.of(SName.root, SName.element, SName.sequenceDiagram)
.getMergedStyle(skinParam.getCurrentStyleBuilder());
final HColor color = style.value(PName.LineColor).asColor(skinParam.getIHtmlColorSet());
final double dx = x2 - x1;
final double dy = y2 - y1;
ug.apply(new UTranslate(x1, y1)).apply(color).apply(new UStroke(2, 2, 1)).draw(new ULine(dx, dy));
}
public double getPreferredHeight() {
final Component comp = getComponent(getStringBounder());
final XDimension2D dim = comp.getPreferredDimension(getStringBounder());
return tile.getPreferredHeight() + dim.getHeight() + spacey;
}
public void addConstraints() {
tile.addConstraints();
}
public Real getMinX() {
return tile.getMinX();
}
public Real getMaxX() {
return tile.getMaxX();
}
}