summaryrefslogtreecommitdiff
path: root/src/net/sourceforge/plantuml/sequencediagram/Englober.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/net/sourceforge/plantuml/sequencediagram/Englober.java')
-rw-r--r--src/net/sourceforge/plantuml/sequencediagram/Englober.java47
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());
}