diff options
Diffstat (limited to 'src/net/sourceforge/plantuml/sequencediagram/Englober.java')
-rw-r--r-- | src/net/sourceforge/plantuml/sequencediagram/Englober.java | 47 |
1 files changed, 35 insertions, 12 deletions
diff --git a/src/net/sourceforge/plantuml/sequencediagram/Englober.java b/src/net/sourceforge/plantuml/sequencediagram/Englober.java index f531e4e..f6b42e9 100644 --- a/src/net/sourceforge/plantuml/sequencediagram/Englober.java +++ b/src/net/sourceforge/plantuml/sequencediagram/Englober.java @@ -2,7 +2,7 @@ * PlantUML : a free UML diagram generator * ======================================================================== * - * (C) Copyright 2009-2017, Arnaud Roques + * (C) Copyright 2009-2020, Arnaud Roques * * Project Info: http://plantuml.com * @@ -42,6 +42,7 @@ import net.sourceforge.plantuml.Dimension2DDouble; import net.sourceforge.plantuml.ISkinParam; import net.sourceforge.plantuml.PaddingParam; import net.sourceforge.plantuml.SkinParamBackcolored; +import net.sourceforge.plantuml.graphic.HtmlColor; import net.sourceforge.plantuml.graphic.StringBounder; import net.sourceforge.plantuml.real.Real; import net.sourceforge.plantuml.real.RealUtils; @@ -51,40 +52,61 @@ import net.sourceforge.plantuml.skin.Area; import net.sourceforge.plantuml.skin.Component; import net.sourceforge.plantuml.skin.ComponentType; import net.sourceforge.plantuml.skin.Context2D; -import net.sourceforge.plantuml.skin.Skin; +import net.sourceforge.plantuml.skin.rose.Rose; +import net.sourceforge.plantuml.style.PName; +import net.sourceforge.plantuml.style.Style; +import net.sourceforge.plantuml.style.StyleBuilder; +import net.sourceforge.plantuml.style.StyleSignature; +import net.sourceforge.plantuml.style.WithStyle; import net.sourceforge.plantuml.ugraphic.UGraphic; import net.sourceforge.plantuml.ugraphic.UTranslate; -public class Englober { +public class Englober implements WithStyle { final private ParticipantEnglober participantEnglober; final private List<Participant> participants = new ArrayList<Participant>(); final private TileArguments tileArguments; + final private StyleBuilder styleBuilder; final private Real core1; final private Real core2; final private boolean isTeoz; private double marginX = 0; - public static Englober createPuma(ParticipantEnglober englober, Participant first, ISkinParam skinParam, Skin skin, - StringBounder stringBounder) { - return new Englober(englober, first, convertFunctionToBeRemoved(skinParam, skin, stringBounder), false); + public StyleSignature getDefaultStyleDefinition() { + return ComponentType.ENGLOBER.getDefaultStyleDefinition(); + } + + public Style[] getUsedStyles() { + Style tmp = getDefaultStyleDefinition().with(participantEnglober.getStereotype()).getMergedStyle(styleBuilder); + final HtmlColor backColor = participantEnglober.getBoxColor(); + if (tmp != null) { + tmp = tmp.eventuallyOverride(PName.BackGroundColor, backColor); + } + return new Style[] { tmp }; + } + + public static Englober createPuma(ParticipantEnglober englober, Participant first, ISkinParam skinParam, Rose skin, + StringBounder stringBounder, StyleBuilder styleBuilder) { + return new Englober(englober, first, convertFunctionToBeRemoved(skinParam, skin, stringBounder), false, + styleBuilder); } public static Englober createTeoz(ParticipantEnglober participantEnglober, Participant first, - TileArguments tileArguments) { - return new Englober(participantEnglober, first, tileArguments, true); + TileArguments tileArguments, StyleBuilder styleBuilder) { + return new Englober(participantEnglober, first, tileArguments, true, styleBuilder); } - private static TileArguments convertFunctionToBeRemoved(ISkinParam skinParam, Skin skin, StringBounder stringBounder) { + private static TileArguments convertFunctionToBeRemoved(ISkinParam skinParam, Rose skin, StringBounder stringBounder) { final TileArguments result = new TileArguments(stringBounder, null, skin, skinParam, null); return result; } private Englober(ParticipantEnglober participantEnglober, Participant first, TileArguments tileArguments, - boolean isTeoz) { + boolean isTeoz, StyleBuilder styleBuilder) { if (tileArguments == null) { throw new IllegalArgumentException(); } + this.styleBuilder = styleBuilder; this.isTeoz = isTeoz; this.participantEnglober = participantEnglober; this.participants.add(first); @@ -148,7 +170,8 @@ public class Englober { final ParticipantEnglober englober = getParticipantEnglober(); final ISkinParam s = englober.getBoxColor() == null ? tileArguments.getSkinParam() : new SkinParamBackcolored( tileArguments.getSkinParam(), englober.getBoxColor()); - return tileArguments.getSkin().createComponent(ComponentType.ENGLOBER, null, s, englober.getTitle()); + return tileArguments.getSkin().createComponent(getUsedStyles(), ComponentType.ENGLOBER, null, s, + englober.getTitle()); } public final ParticipantEnglober getParticipantEnglober() { @@ -183,7 +206,7 @@ public class Englober { } public double getPreferredHeight() { - final Component comp = tileArguments.getSkin().createComponent(ComponentType.ENGLOBER, null, + final Component comp = tileArguments.getSkin().createComponent(getUsedStyles(), ComponentType.ENGLOBER, null, tileArguments.getSkinParam(), getParticipantEnglober().getTitle()); return comp.getPreferredHeight(tileArguments.getStringBounder()); } |