mirror of
https://github.com/octoleo/plantuml.git
synced 2024-12-22 02:49:06 +00:00
fix: minor issues
https://github.com/plantuml/plantuml/issues/1531 https://github.com/plantuml/plantuml/issues/1535
This commit is contained in:
parent
04a071c4a4
commit
41ba2020b6
@ -1,4 +1,4 @@
|
|||||||
# Warning, "version" should be the same in gradle.properties and Version.java
|
# Warning, "version" should be the same in gradle.properties and Version.java
|
||||||
# Any idea anyone how to magically synchronize those :-) ?
|
# Any idea anyone how to magically synchronize those :-) ?
|
||||||
version = 1.2023.11beta2
|
version = 1.2023.11beta3
|
||||||
org.gradle.workers.max = 3
|
org.gradle.workers.max = 3
|
@ -388,11 +388,11 @@ public class ActivityDiagram3 extends UmlDiagram {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public CommandExecutionResult backward(Display label, BoxStyle boxStyle, LinkRendering incoming1,
|
public CommandExecutionResult backward(Display label, BoxStyle boxStyle, LinkRendering incoming1,
|
||||||
LinkRendering incoming2) {
|
LinkRendering incoming2, Stereotype stereotype) {
|
||||||
manageSwimlaneStrategy();
|
manageSwimlaneStrategy();
|
||||||
if (current() instanceof InstructionRepeat) {
|
if (current() instanceof InstructionRepeat) {
|
||||||
final InstructionRepeat instructionRepeat = (InstructionRepeat) current();
|
final InstructionRepeat instructionRepeat = (InstructionRepeat) current();
|
||||||
instructionRepeat.setBackward(label, swinlanes.getCurrentSwimlane(), boxStyle, incoming1, incoming2);
|
instructionRepeat.setBackward(label, swinlanes.getCurrentSwimlane(), boxStyle, incoming1, incoming2, stereotype);
|
||||||
return CommandExecutionResult.ok();
|
return CommandExecutionResult.ok();
|
||||||
}
|
}
|
||||||
if (current() instanceof InstructionWhile) {
|
if (current() instanceof InstructionWhile) {
|
||||||
|
@ -57,6 +57,7 @@ import net.sourceforge.plantuml.klimt.font.StringBounder;
|
|||||||
import net.sourceforge.plantuml.klimt.geom.VerticalAlignment;
|
import net.sourceforge.plantuml.klimt.geom.VerticalAlignment;
|
||||||
import net.sourceforge.plantuml.sequencediagram.NotePosition;
|
import net.sourceforge.plantuml.sequencediagram.NotePosition;
|
||||||
import net.sourceforge.plantuml.sequencediagram.NoteType;
|
import net.sourceforge.plantuml.sequencediagram.NoteType;
|
||||||
|
import net.sourceforge.plantuml.stereo.Stereotype;
|
||||||
import net.sourceforge.plantuml.style.ISkinParam;
|
import net.sourceforge.plantuml.style.ISkinParam;
|
||||||
|
|
||||||
public class InstructionRepeat extends AbstractInstruction implements Instruction {
|
public class InstructionRepeat extends AbstractInstruction implements Instruction {
|
||||||
@ -74,6 +75,7 @@ public class InstructionRepeat extends AbstractInstruction implements Instructio
|
|||||||
|
|
||||||
private Display backward = Display.NULL;
|
private Display backward = Display.NULL;
|
||||||
|
|
||||||
|
private Stereotype stereotype;
|
||||||
private LinkRendering incoming1 = LinkRendering.none();
|
private LinkRendering incoming1 = LinkRendering.none();
|
||||||
private LinkRendering incoming2 = LinkRendering.none();
|
private LinkRendering incoming2 = LinkRendering.none();
|
||||||
private List<PositionedNote> backwardNotes = new ArrayList<>();
|
private List<PositionedNote> backwardNotes = new ArrayList<>();
|
||||||
@ -110,12 +112,13 @@ public class InstructionRepeat extends AbstractInstruction implements Instructio
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setBackward(Display label, Swimlane swimlaneBackward, BoxStyle boxStyle, LinkRendering incoming1,
|
public void setBackward(Display label, Swimlane swimlaneBackward, BoxStyle boxStyle, LinkRendering incoming1,
|
||||||
LinkRendering incoming2) {
|
LinkRendering incoming2, Stereotype stereotype) {
|
||||||
this.backward = label;
|
this.backward = label;
|
||||||
this.swimlaneBackward = swimlaneBackward;
|
this.swimlaneBackward = swimlaneBackward;
|
||||||
this.boxStyle = boxStyle;
|
this.boxStyle = boxStyle;
|
||||||
this.incoming1 = incoming1;
|
this.incoming1 = incoming1;
|
||||||
this.incoming2 = incoming2;
|
this.incoming2 = incoming2;
|
||||||
|
this.stereotype = stereotype;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasBackward() {
|
public boolean hasBackward() {
|
||||||
@ -166,7 +169,7 @@ public class InstructionRepeat extends AbstractInstruction implements Instructio
|
|||||||
if (Display.isNull(backward))
|
if (Display.isNull(backward))
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
Ftile result = factory.activity(backward, swimlaneBackward, boxStyle, Colors.empty(), null);
|
Ftile result = factory.activity(backward, swimlaneBackward, boxStyle, Colors.empty(), stereotype);
|
||||||
if (backwardNotes.size() > 0)
|
if (backwardNotes.size() > 0)
|
||||||
result = factory.addNote(result, swimlaneBackward, backwardNotes, VerticalAlignment.CENTER);
|
result = factory.addNote(result, swimlaneBackward, backwardNotes, VerticalAlignment.CENTER);
|
||||||
|
|
||||||
|
@ -50,6 +50,7 @@ import net.sourceforge.plantuml.regex.RegexLeaf;
|
|||||||
import net.sourceforge.plantuml.regex.RegexOptional;
|
import net.sourceforge.plantuml.regex.RegexOptional;
|
||||||
import net.sourceforge.plantuml.regex.RegexOr;
|
import net.sourceforge.plantuml.regex.RegexOr;
|
||||||
import net.sourceforge.plantuml.regex.RegexResult;
|
import net.sourceforge.plantuml.regex.RegexResult;
|
||||||
|
import net.sourceforge.plantuml.stereo.Stereotype;
|
||||||
import net.sourceforge.plantuml.utils.LineLocation;
|
import net.sourceforge.plantuml.utils.LineLocation;
|
||||||
|
|
||||||
public class CommandBackward3 extends SingleLineCommand2<ActivityDiagram3> {
|
public class CommandBackward3 extends SingleLineCommand2<ActivityDiagram3> {
|
||||||
@ -96,12 +97,18 @@ public class CommandBackward3 extends SingleLineCommand2<ActivityDiagram3> {
|
|||||||
else
|
else
|
||||||
boxStyle = BoxStyle.fromString(styleString);
|
boxStyle = BoxStyle.fromString(styleString);
|
||||||
|
|
||||||
|
final String stereo = arg.get("STYLE", 1);
|
||||||
|
|
||||||
|
Stereotype stereotype = null;
|
||||||
|
if (stereo != null)
|
||||||
|
stereotype = Stereotype.build(stereo);
|
||||||
|
|
||||||
final Display label = Display.getWithNewlines(arg.get("LABEL", 0));
|
final Display label = Display.getWithNewlines(arg.get("LABEL", 0));
|
||||||
|
|
||||||
final LinkRendering in = getBackRendering(diagram, arg, "INCOMING");
|
final LinkRendering in = getBackRendering(diagram, arg, "INCOMING");
|
||||||
final LinkRendering out = getBackRendering(diagram, arg, "OUTCOMING");
|
final LinkRendering out = getBackRendering(diagram, arg, "OUTCOMING");
|
||||||
|
|
||||||
return diagram.backward(label, boxStyle, in, out);
|
return diagram.backward(label, boxStyle, in, out, stereotype);
|
||||||
}
|
}
|
||||||
|
|
||||||
static public LinkRendering getBackRendering(ActivityDiagram3 diagram, RegexResult arg, String name)
|
static public LinkRendering getBackRendering(ActivityDiagram3 diagram, RegexResult arg, String name)
|
||||||
|
@ -47,6 +47,7 @@ import net.sourceforge.plantuml.regex.IRegex;
|
|||||||
import net.sourceforge.plantuml.regex.RegexConcat;
|
import net.sourceforge.plantuml.regex.RegexConcat;
|
||||||
import net.sourceforge.plantuml.regex.RegexLeaf;
|
import net.sourceforge.plantuml.regex.RegexLeaf;
|
||||||
import net.sourceforge.plantuml.regex.RegexResult;
|
import net.sourceforge.plantuml.regex.RegexResult;
|
||||||
|
import net.sourceforge.plantuml.stereo.Stereotype;
|
||||||
import net.sourceforge.plantuml.utils.BlocLines;
|
import net.sourceforge.plantuml.utils.BlocLines;
|
||||||
|
|
||||||
public class CommandBackwardLong3 extends CommandMultilines3<ActivityDiagram3> {
|
public class CommandBackwardLong3 extends CommandMultilines3<ActivityDiagram3> {
|
||||||
@ -86,6 +87,11 @@ public class CommandBackwardLong3 extends CommandMultilines3<ActivityDiagram3> {
|
|||||||
final RegexResult line0 = getStartingPattern().matcher(lines.getFirst().getTrimmed().getString());
|
final RegexResult line0 = getStartingPattern().matcher(lines.getFirst().getTrimmed().getString());
|
||||||
final RegexResult lineLast = getPatternEnd2().matcher(lines.getLast().getString());
|
final RegexResult lineLast = getPatternEnd2().matcher(lines.getLast().getString());
|
||||||
final String end = lineLast.get("END", 0);
|
final String end = lineLast.get("END", 0);
|
||||||
|
final String stereo = lineLast.get("END", 1);
|
||||||
|
|
||||||
|
Stereotype stereotype = null;
|
||||||
|
if (stereo != null)
|
||||||
|
stereotype = Stereotype.build(stereo);
|
||||||
|
|
||||||
final BoxStyle style = BoxStyle.fromString(end);
|
final BoxStyle style = BoxStyle.fromString(end);
|
||||||
lines = lines.removeStartingAndEnding(line0.get("DATA", 0), end.length());
|
lines = lines.removeStartingAndEnding(line0.get("DATA", 0), end.length());
|
||||||
@ -93,6 +99,6 @@ public class CommandBackwardLong3 extends CommandMultilines3<ActivityDiagram3> {
|
|||||||
final LinkRendering in = LinkRendering.none();
|
final LinkRendering in = LinkRendering.none();
|
||||||
final LinkRendering out = LinkRendering.none();
|
final LinkRendering out = LinkRendering.none();
|
||||||
|
|
||||||
return diagram.backward(lines.toDisplay(), style, in, out);
|
return diagram.backward(lines.toDisplay(), style, in, out, stereotype);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -37,6 +37,7 @@ package net.sourceforge.plantuml.sequencediagram;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
import net.sourceforge.plantuml.klimt.UTranslate;
|
import net.sourceforge.plantuml.klimt.UTranslate;
|
||||||
@ -64,17 +65,21 @@ import net.sourceforge.plantuml.style.WithStyle;
|
|||||||
public class Doll implements WithStyle {
|
public class Doll implements WithStyle {
|
||||||
|
|
||||||
final private List<Participant> participants = new ArrayList<>();
|
final private List<Participant> participants = new ArrayList<>();
|
||||||
|
// alls is only used for Teoz: refactor needed after puma will be removed
|
||||||
|
final private Map<ParticipantEnglober, Doll> alls;
|
||||||
final private ParticipantEnglober englober;
|
final private ParticipantEnglober englober;
|
||||||
final private StyleBuilder styleBuilder;
|
final private StyleBuilder styleBuilder;
|
||||||
final private TileArguments tileArguments;
|
final private TileArguments tileArguments;
|
||||||
|
|
||||||
public static Doll createPuma(ParticipantEnglober englober, Participant first, ISkinParam skinParam, Rose skin,
|
public static Doll createPuma(ParticipantEnglober englober, Participant first, ISkinParam skinParam, Rose skin,
|
||||||
StringBounder stringBounder, StyleBuilder styleBuilder) {
|
StringBounder stringBounder, StyleBuilder styleBuilder) {
|
||||||
return new Doll(englober, convertFunctionToBeRemoved(skinParam, skin, stringBounder), styleBuilder, first);
|
return new Doll(englober, convertFunctionToBeRemoved(skinParam, skin, stringBounder), styleBuilder, first,
|
||||||
|
null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Doll createTeoz(ParticipantEnglober englober, TileArguments tileArguments) {
|
public static Doll createTeoz(ParticipantEnglober englober, TileArguments tileArguments,
|
||||||
return new Doll(englober, tileArguments, tileArguments.getSkinParam().getCurrentStyleBuilder(), null);
|
Map<ParticipantEnglober, Doll> alls) {
|
||||||
|
return new Doll(englober, tileArguments, tileArguments.getSkinParam().getCurrentStyleBuilder(), null, alls);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static TileArguments convertFunctionToBeRemoved(ISkinParam skinParam, Rose skin,
|
private static TileArguments convertFunctionToBeRemoved(ISkinParam skinParam, Rose skin,
|
||||||
@ -83,10 +88,11 @@ public class Doll implements WithStyle {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private Doll(ParticipantEnglober englober, TileArguments tileArguments, StyleBuilder styleBuilder,
|
private Doll(ParticipantEnglober englober, TileArguments tileArguments, StyleBuilder styleBuilder,
|
||||||
Participant first) {
|
Participant first, Map<ParticipantEnglober, Doll> alls) {
|
||||||
this.englober = Objects.requireNonNull(englober);
|
this.englober = Objects.requireNonNull(englober);
|
||||||
this.styleBuilder = styleBuilder;
|
this.styleBuilder = styleBuilder;
|
||||||
this.tileArguments = Objects.requireNonNull(tileArguments);
|
this.tileArguments = Objects.requireNonNull(tileArguments);
|
||||||
|
this.alls = alls;
|
||||||
|
|
||||||
if (first != null)
|
if (first != null)
|
||||||
this.participants.add(first);
|
this.participants.add(first);
|
||||||
@ -186,8 +192,8 @@ public class Doll implements WithStyle {
|
|||||||
final double x1 = getPosA(stringBounder).getCurrentValue() - 4;
|
final double x1 = getPosA(stringBounder).getCurrentValue() - 4;
|
||||||
final double x2 = getPosE(stringBounder).getCurrentValue() + 4;
|
final double x2 = getPosE(stringBounder).getCurrentValue() + 4;
|
||||||
|
|
||||||
if (group != null) {
|
for (Doll current = group; current != null; current = current.getParent()) {
|
||||||
final double titlePreferredHeight = group.getTitlePreferredHeight();
|
final double titlePreferredHeight = current.getTitlePreferredHeight();
|
||||||
ug = ug.apply(UTranslate.dy(titlePreferredHeight));
|
ug = ug.apply(UTranslate.dy(titlePreferredHeight));
|
||||||
height -= titlePreferredHeight;
|
height -= titlePreferredHeight;
|
||||||
}
|
}
|
||||||
@ -196,6 +202,13 @@ public class Doll implements WithStyle {
|
|||||||
getComponent().drawU(ug.apply(new UTranslate(x1, 1)), new Area(dim), context);
|
getComponent().drawU(ug.apply(new UTranslate(x1, 1)), new Area(dim), context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Doll getParent() {
|
||||||
|
final ParticipantEnglober parent = getParticipantEnglober().getParent();
|
||||||
|
if (parent == null)
|
||||||
|
return null;
|
||||||
|
return alls.get(parent);
|
||||||
|
}
|
||||||
|
|
||||||
public void addInternalConstraints(StringBounder stringBounder) {
|
public void addInternalConstraints(StringBounder stringBounder) {
|
||||||
final double titleWidth = getTitleWidth();
|
final double titleWidth = getTitleWidth();
|
||||||
final double x1 = getPosB(stringBounder).getCurrentValue();
|
final double x1 = getPosB(stringBounder).getCurrentValue();
|
||||||
|
@ -67,19 +67,12 @@ public class Dolls {
|
|||||||
private void addParticipant(Participant p, ParticipantEnglober englober, TileArguments tileArguments) {
|
private void addParticipant(Participant p, ParticipantEnglober englober, TileArguments tileArguments) {
|
||||||
Doll already = alls.get(englober);
|
Doll already = alls.get(englober);
|
||||||
if (already == null) {
|
if (already == null) {
|
||||||
already = Doll.createTeoz(englober, tileArguments);
|
already = Doll.createTeoz(englober, tileArguments, alls);
|
||||||
alls.put(englober, already);
|
alls.put(englober, already);
|
||||||
}
|
}
|
||||||
already.addParticipant(p);
|
already.addParticipant(p);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Doll getParent(Doll doll) {
|
|
||||||
final ParticipantEnglober parent = doll.getParticipantEnglober().getParent();
|
|
||||||
if (parent == null)
|
|
||||||
return null;
|
|
||||||
return alls.get(parent);
|
|
||||||
}
|
|
||||||
|
|
||||||
public int size() {
|
public int size() {
|
||||||
return alls.size();
|
return alls.size();
|
||||||
}
|
}
|
||||||
@ -87,10 +80,9 @@ public class Dolls {
|
|||||||
public double getOffsetForEnglobers(StringBounder stringBounder) {
|
public double getOffsetForEnglobers(StringBounder stringBounder) {
|
||||||
double result = 0;
|
double result = 0;
|
||||||
for (Doll doll : alls.values()) {
|
for (Doll doll : alls.values()) {
|
||||||
double height = doll.getTitlePreferredHeight();
|
double height = 0;
|
||||||
final Doll group = getParent(doll);
|
for (Doll current = doll; current != null; current = current.getParent())
|
||||||
if (group != null)
|
height += current.getTitlePreferredHeight();
|
||||||
height += group.getTitlePreferredHeight();
|
|
||||||
|
|
||||||
if (height > result)
|
if (height > result)
|
||||||
result = height;
|
result = height;
|
||||||
@ -100,19 +92,17 @@ public class Dolls {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void addConstraints(StringBounder stringBounder) {
|
public void addConstraints(StringBounder stringBounder) {
|
||||||
for (Doll doll : alls.values()) {
|
for (Doll doll : alls.values())
|
||||||
doll.addInternalConstraints(stringBounder);
|
doll.addInternalConstraints(stringBounder);
|
||||||
}
|
|
||||||
|
|
||||||
for (Doll doll : alls.values()) {
|
for (Doll doll : alls.values())
|
||||||
doll.addConstraintAfter(stringBounder);
|
doll.addConstraintAfter(stringBounder);
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void drawEnglobers(UGraphic ug, double height, Context2D context) {
|
public void drawEnglobers(UGraphic ug, double height, Context2D context) {
|
||||||
for (Doll doll : alls.values())
|
for (Doll doll : alls.values())
|
||||||
doll.drawMe(ug, height, context, getParent(doll));
|
doll.drawMe(ug, height, context, doll.getParent());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ public class Version {
|
|||||||
|
|
||||||
// Warning, "version" should be the same in gradle.properties and Version.java
|
// Warning, "version" should be the same in gradle.properties and Version.java
|
||||||
// Any idea anyone how to magically synchronize those :-) ?
|
// Any idea anyone how to magically synchronize those :-) ?
|
||||||
private static final String version = "1.2023.11beta2";
|
private static final String version = "1.2023.11beta3";
|
||||||
|
|
||||||
public static String versionString() {
|
public static String versionString() {
|
||||||
return version;
|
return version;
|
||||||
|
Loading…
Reference in New Issue
Block a user