mirror of
https://github.com/octoleo/plantuml.git
synced 2024-11-28 15:56:31 +00:00
Version 6141
This commit is contained in:
parent
2ce0511e80
commit
573aac6a1c
2
pom.xml
2
pom.xml
@ -36,7 +36,7 @@
|
|||||||
|
|
||||||
<groupId>net.sourceforge.plantuml</groupId>
|
<groupId>net.sourceforge.plantuml</groupId>
|
||||||
<artifactId>plantuml</artifactId>
|
<artifactId>plantuml</artifactId>
|
||||||
<version>6121-SNAPSHOT</version>
|
<version>6141-SNAPSHOT</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<name>PlantUML</name>
|
<name>PlantUML</name>
|
||||||
|
@ -28,13 +28,13 @@
|
|||||||
*
|
*
|
||||||
* Original Author: Arnaud Roques
|
* Original Author: Arnaud Roques
|
||||||
*
|
*
|
||||||
* Revision $Revision: 5877 $
|
* Revision $Revision: 6130 $
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package net.sourceforge.plantuml;
|
package net.sourceforge.plantuml;
|
||||||
|
|
||||||
public enum FileFormat {
|
public enum FileFormat {
|
||||||
PNG, SVG, EPS, EPS_VIA_SVG, ATXT, UTXT, XMI_STANDARD, XMI_STAR, XMI_ARGO;
|
PNG, SVG, EPS, EPS_VIA_SVG, ATXT, UTXT, DOT, XMI_STANDARD, XMI_STAR, XMI_ARGO;
|
||||||
|
|
||||||
public String getFileSuffix() {
|
public String getFileSuffix() {
|
||||||
if (this == EPS_VIA_SVG) {
|
if (this == EPS_VIA_SVG) {
|
||||||
|
@ -65,4 +65,6 @@ public interface ISkinParam {
|
|||||||
|
|
||||||
public int getDpi();
|
public int getDpi();
|
||||||
|
|
||||||
|
public boolean useOctagonForActivity();
|
||||||
|
|
||||||
}
|
}
|
@ -28,7 +28,7 @@
|
|||||||
*
|
*
|
||||||
* Original Author: Arnaud Roques
|
* Original Author: Arnaud Roques
|
||||||
*
|
*
|
||||||
* Revision $Revision: 5877 $
|
* Revision $Revision: 6130 $
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package net.sourceforge.plantuml;
|
package net.sourceforge.plantuml;
|
||||||
@ -90,6 +90,9 @@ public class Option {
|
|||||||
setFileFormat(FileFormat.XMI_STAR);
|
setFileFormat(FileFormat.XMI_STAR);
|
||||||
} else if (s.equalsIgnoreCase("-teps") || s.equalsIgnoreCase("-eps")) {
|
} else if (s.equalsIgnoreCase("-teps") || s.equalsIgnoreCase("-eps")) {
|
||||||
setFileFormat(FileFormat.EPS);
|
setFileFormat(FileFormat.EPS);
|
||||||
|
} else if (s.equalsIgnoreCase("-tdot") || s.equalsIgnoreCase("-dot")) {
|
||||||
|
setFileFormat(FileFormat.DOT);
|
||||||
|
OptionFlags.getInstance().setKeepTmpFiles(true);
|
||||||
} else if (s.equalsIgnoreCase("-ttxt") || s.equalsIgnoreCase("-txt")) {
|
} else if (s.equalsIgnoreCase("-ttxt") || s.equalsIgnoreCase("-txt")) {
|
||||||
setFileFormat(FileFormat.ATXT);
|
setFileFormat(FileFormat.ATXT);
|
||||||
} else if (s.equalsIgnoreCase("-tutxt") || s.equalsIgnoreCase("-utxt")) {
|
} else if (s.equalsIgnoreCase("-tutxt") || s.equalsIgnoreCase("-utxt")) {
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
*
|
*
|
||||||
* Original Author: Arnaud Roques
|
* Original Author: Arnaud Roques
|
||||||
*
|
*
|
||||||
* Revision $Revision: 5983 $
|
* Revision $Revision: 6141 $
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package net.sourceforge.plantuml;
|
package net.sourceforge.plantuml;
|
||||||
@ -263,4 +263,13 @@ public class SkinParam implements ISkinParam {
|
|||||||
return 96;
|
return 96;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean useOctagonForActivity() {
|
||||||
|
// activityShape roundedbox
|
||||||
|
final String value = getValue("activityshape");
|
||||||
|
if ("roundedbox".equalsIgnoreCase(value)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -111,4 +111,8 @@ public class SkinParamBackcolored implements ISkinParam {
|
|||||||
public int getDpi() {
|
public int getDpi() {
|
||||||
return skinParam.getDpi();
|
return skinParam.getDpi();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean useOctagonForActivity() {
|
||||||
|
return skinParam.useOctagonForActivity();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -118,6 +118,14 @@ public class ActivityDiagram2 extends CucaDiagram {
|
|||||||
this.futureLength = 2;
|
this.futureLength = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IEntity getLastEntityConsulted() {
|
||||||
|
if (waitings.size()==1) {
|
||||||
|
return waitings.iterator().next();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
private String getAutoCode() {
|
private String getAutoCode() {
|
||||||
return "ac" + UniqueSequence.getValue();
|
return "ac" + UniqueSequence.getValue();
|
||||||
}
|
}
|
||||||
@ -207,4 +215,5 @@ public class ActivityDiagram2 extends CucaDiagram {
|
|||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -40,6 +40,7 @@ import net.sourceforge.plantuml.activitydiagram2.command.CommandEndif2;
|
|||||||
import net.sourceforge.plantuml.activitydiagram2.command.CommandGoto2;
|
import net.sourceforge.plantuml.activitydiagram2.command.CommandGoto2;
|
||||||
import net.sourceforge.plantuml.activitydiagram2.command.CommandIf2;
|
import net.sourceforge.plantuml.activitydiagram2.command.CommandIf2;
|
||||||
import net.sourceforge.plantuml.activitydiagram2.command.CommandLabel2;
|
import net.sourceforge.plantuml.activitydiagram2.command.CommandLabel2;
|
||||||
|
import net.sourceforge.plantuml.activitydiagram2.command.CommandMultilinesNoteActivity2;
|
||||||
import net.sourceforge.plantuml.activitydiagram2.command.CommandNewActivity2;
|
import net.sourceforge.plantuml.activitydiagram2.command.CommandNewActivity2;
|
||||||
import net.sourceforge.plantuml.activitydiagram2.command.CommandStart2;
|
import net.sourceforge.plantuml.activitydiagram2.command.CommandStart2;
|
||||||
import net.sourceforge.plantuml.command.AbstractUmlSystemCommandFactory;
|
import net.sourceforge.plantuml.command.AbstractUmlSystemCommandFactory;
|
||||||
@ -73,7 +74,7 @@ public class ActivityDiagramFactory2 extends AbstractUmlSystemCommandFactory {
|
|||||||
// addCommand(new CommandLinkLongActivity(system));
|
// addCommand(new CommandLinkLongActivity(system));
|
||||||
//
|
//
|
||||||
// addCommand(new CommandNoteActivity(system));
|
// addCommand(new CommandNoteActivity(system));
|
||||||
// addCommand(new CommandMultilinesNoteActivity(system));
|
addCommand(new CommandMultilinesNoteActivity2(system));
|
||||||
//
|
//
|
||||||
// addCommand(new CommandNoteOnActivityLink(system));
|
// addCommand(new CommandNoteOnActivityLink(system));
|
||||||
// addCommand(new CommandMultilinesNoteActivityLink(system));
|
// addCommand(new CommandMultilinesNoteActivityLink(system));
|
||||||
|
@ -0,0 +1,94 @@
|
|||||||
|
/* ========================================================================
|
||||||
|
* PlantUML : a free UML diagram generator
|
||||||
|
* ========================================================================
|
||||||
|
*
|
||||||
|
* (C) Copyright 2009, Arnaud Roques
|
||||||
|
*
|
||||||
|
* Project Info: http://plantuml.sourceforge.net
|
||||||
|
*
|
||||||
|
* This file is part of PlantUML.
|
||||||
|
*
|
||||||
|
* PlantUML is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* PlantUML distributed in the hope that it will be useful, but
|
||||||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
||||||
|
* License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||||
|
* USA.
|
||||||
|
*
|
||||||
|
* [Java is a trademark or registered trademark of Sun Microsystems, Inc.
|
||||||
|
* in the United States and other countries.]
|
||||||
|
*
|
||||||
|
* Original Author: Arnaud Roques
|
||||||
|
*
|
||||||
|
* Revision $Revision: 5751 $
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package net.sourceforge.plantuml.activitydiagram2.command;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import net.sourceforge.plantuml.StringUtils;
|
||||||
|
import net.sourceforge.plantuml.UniqueSequence;
|
||||||
|
import net.sourceforge.plantuml.activitydiagram2.ActivityDiagram2;
|
||||||
|
import net.sourceforge.plantuml.command.CommandExecutionResult;
|
||||||
|
import net.sourceforge.plantuml.command.CommandMultilines;
|
||||||
|
import net.sourceforge.plantuml.command.Position;
|
||||||
|
import net.sourceforge.plantuml.cucadiagram.Entity;
|
||||||
|
import net.sourceforge.plantuml.cucadiagram.EntityType;
|
||||||
|
import net.sourceforge.plantuml.cucadiagram.IEntity;
|
||||||
|
import net.sourceforge.plantuml.cucadiagram.Link;
|
||||||
|
import net.sourceforge.plantuml.cucadiagram.LinkDecor;
|
||||||
|
import net.sourceforge.plantuml.cucadiagram.LinkType;
|
||||||
|
|
||||||
|
public class CommandMultilinesNoteActivity2 extends CommandMultilines<ActivityDiagram2> {
|
||||||
|
|
||||||
|
public CommandMultilinesNoteActivity2(final ActivityDiagram2 system) {
|
||||||
|
super(system, "(?i)^note\\s+(right|left|top|bottom)$", "(?i)^end ?note$");
|
||||||
|
}
|
||||||
|
|
||||||
|
public final CommandExecutionResult execute(List<String> lines) {
|
||||||
|
|
||||||
|
final List<String> line0 = StringUtils.getSplit(getStartingPattern(), lines.get(0).trim());
|
||||||
|
final String pos = line0.get(0);
|
||||||
|
|
||||||
|
IEntity activity = getSystem().getLastEntityConsulted();
|
||||||
|
if (activity == null) {
|
||||||
|
// activity = getSystem().getStart();
|
||||||
|
return CommandExecutionResult.error("No activity defined");
|
||||||
|
}
|
||||||
|
|
||||||
|
final List<String> strings = StringUtils.removeEmptyColumns(lines.subList(1, lines.size() - 1));
|
||||||
|
final String s = StringUtils.getMergedLines(strings);
|
||||||
|
|
||||||
|
final Entity note = getSystem().createEntity("GMN" + UniqueSequence.getValue(), s, EntityType.NOTE);
|
||||||
|
|
||||||
|
final Link link;
|
||||||
|
|
||||||
|
final Position position = Position.valueOf(pos.toUpperCase()).withRankdir(getSystem().getRankdir());
|
||||||
|
|
||||||
|
final LinkType type = new LinkType(LinkDecor.NONE, LinkDecor.NONE).getDashed();
|
||||||
|
|
||||||
|
if (position == Position.RIGHT) {
|
||||||
|
link = new Link(activity, note, type, null, 1);
|
||||||
|
} else if (position == Position.LEFT) {
|
||||||
|
link = new Link(note, activity, type, null, 1);
|
||||||
|
} else if (position == Position.BOTTOM) {
|
||||||
|
link = new Link(activity, note, type, null, 2);
|
||||||
|
} else if (position == Position.TOP) {
|
||||||
|
link = new Link(note, activity, type, null, 2);
|
||||||
|
} else {
|
||||||
|
throw new IllegalArgumentException();
|
||||||
|
}
|
||||||
|
getSystem().addLink(link);
|
||||||
|
return CommandExecutionResult.ok();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,52 @@
|
|||||||
|
/* ========================================================================
|
||||||
|
* PlantUML : a free UML diagram generator
|
||||||
|
* ========================================================================
|
||||||
|
*
|
||||||
|
* (C) Copyright 2009, Arnaud Roques
|
||||||
|
*
|
||||||
|
* Project Info: http://plantuml.sourceforge.net
|
||||||
|
*
|
||||||
|
* This file is part of PlantUML.
|
||||||
|
*
|
||||||
|
* PlantUML is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* PlantUML distributed in the hope that it will be useful, but
|
||||||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
||||||
|
* License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||||
|
* USA.
|
||||||
|
*
|
||||||
|
* [Java is a trademark or registered trademark of Sun Microsystems, Inc.
|
||||||
|
* in the United States and other countries.]
|
||||||
|
*
|
||||||
|
* Original Author: Arnaud Roques
|
||||||
|
*
|
||||||
|
* Revision $Revision: 4762 $
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package net.sourceforge.plantuml.command;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import net.sourceforge.plantuml.UmlDiagram;
|
||||||
|
|
||||||
|
public class CommandHideUnlinked extends SingleLineCommand<UmlDiagram> {
|
||||||
|
|
||||||
|
public CommandHideUnlinked(UmlDiagram diagram) {
|
||||||
|
super(diagram, "(?i)^(hide|show)\\s+unlinked$");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected CommandExecutionResult executeArg(List<String> arg) {
|
||||||
|
getSystem().setHideUnlinkedData(arg.get(0).equalsIgnoreCase("hide"));
|
||||||
|
return CommandExecutionResult.ok();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -28,7 +28,7 @@
|
|||||||
*
|
*
|
||||||
* Original Author: Arnaud Roques
|
* Original Author: Arnaud Roques
|
||||||
*
|
*
|
||||||
* Revision $Revision: 5872 $
|
* Revision $Revision: 6130 $
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package net.sourceforge.plantuml.cucadiagram.dot;
|
package net.sourceforge.plantuml.cucadiagram.dot;
|
||||||
@ -190,6 +190,8 @@ public final class CucaDiagramFileMaker {
|
|||||||
return createEpsViaSvg(os, dotStrings, fileFormatOption);
|
return createEpsViaSvg(os, dotStrings, fileFormatOption);
|
||||||
} else if (fileFormat == FileFormat.EPS) {
|
} else if (fileFormat == FileFormat.EPS) {
|
||||||
return createEps(os, dotStrings, fileFormatOption);
|
return createEps(os, dotStrings, fileFormatOption);
|
||||||
|
} else if (fileFormat == FileFormat.DOT) {
|
||||||
|
return createDot(os, dotStrings, fileFormatOption);
|
||||||
} else {
|
} else {
|
||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException();
|
||||||
}
|
}
|
||||||
@ -214,9 +216,7 @@ public final class CucaDiagramFileMaker {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
deltaY = 0;
|
deltaY = 0;
|
||||||
populateImages(diagram.getDpiFactor(fileFormatOption), diagram.getDpi(fileFormatOption));
|
final GraphvizMaker dotMaker = populateImagesAndCreateGraphvizMaker(dotStrings, fileFormatOption);
|
||||||
populateImagesLink(diagram.getDpiFactor(fileFormatOption), diagram.getDpi(fileFormatOption));
|
|
||||||
final GraphvizMaker dotMaker = createDotMaker(dotStrings, fileFormatOption);
|
|
||||||
final String dotString = dotMaker.createDotString();
|
final String dotString = dotMaker.createDotString();
|
||||||
|
|
||||||
if (OptionFlags.getInstance().isKeepTmpFiles()) {
|
if (OptionFlags.getInstance().isKeepTmpFiles()) {
|
||||||
@ -411,9 +411,7 @@ public final class CucaDiagramFileMaker {
|
|||||||
|
|
||||||
final StringBuilder cmap = new StringBuilder();
|
final StringBuilder cmap = new StringBuilder();
|
||||||
try {
|
try {
|
||||||
populateImages(diagram.getDpiFactor(fileFormatOption), diagram.getDpi(fileFormatOption));
|
final GraphvizMaker dotMaker = populateImagesAndCreateGraphvizMaker(dotStrings, fileFormatOption);
|
||||||
populateImagesLink(diagram.getDpiFactor(fileFormatOption), diagram.getDpi(fileFormatOption));
|
|
||||||
final GraphvizMaker dotMaker = createDotMaker(dotStrings, fileFormatOption);
|
|
||||||
final String dotString = dotMaker.createDotString();
|
final String dotString = dotMaker.createDotString();
|
||||||
|
|
||||||
if (OptionFlags.getInstance().isKeepTmpFiles()) {
|
if (OptionFlags.getInstance().isKeepTmpFiles()) {
|
||||||
@ -469,6 +467,14 @@ public final class CucaDiagramFileMaker {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String createDot(OutputStream os, List<String> dotStrings, FileFormatOption fileFormatOption)
|
||||||
|
throws IOException, InterruptedException {
|
||||||
|
final GraphvizMaker dotMaker = populateImagesAndCreateGraphvizMaker(dotStrings, fileFormatOption);
|
||||||
|
final String dotString = dotMaker.createDotString();
|
||||||
|
os.write(dotString.getBytes());
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
private BufferedImage scaleImage(BufferedImage im, Scale scale) {
|
private BufferedImage scaleImage(BufferedImage im, Scale scale) {
|
||||||
if (scale == null) {
|
if (scale == null) {
|
||||||
return im;
|
return im;
|
||||||
@ -625,52 +631,6 @@ public final class CucaDiagramFileMaker {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private GraphvizMaker createDotMaker(List<String> dotStrings, FileFormatOption fileFormatOption)
|
|
||||||
throws IOException, InterruptedException {
|
|
||||||
|
|
||||||
final FileFormat fileFormat = fileFormatOption.getFileFormat();
|
|
||||||
if (diagram.getUmlDiagramType() == UmlDiagramType.STATE
|
|
||||||
|| diagram.getUmlDiagramType() == UmlDiagramType.ACTIVITY) {
|
|
||||||
new CucaDiagramSimplifier(diagram, dotStrings, fileFormat);
|
|
||||||
}
|
|
||||||
final DotData dotData = new DotData(null, diagram.getLinks(), diagram.entities(), diagram.getUmlDiagramType(),
|
|
||||||
diagram.getSkinParam(), diagram.getRankdir(), diagram, diagram);
|
|
||||||
|
|
||||||
dotData.setDpi(diagram.getDpi(fileFormatOption));
|
|
||||||
|
|
||||||
if (diagram.getUmlDiagramType() == UmlDiagramType.CLASS || diagram.getUmlDiagramType() == UmlDiagramType.OBJECT) {
|
|
||||||
dotData.setStaticImagesMap(staticFilesMap);
|
|
||||||
|
|
||||||
if (diagram.isVisibilityModifierPresent()) {
|
|
||||||
dotData.setVisibilityModifierPresent(true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return new DotMaker(dotData, dotStrings, fileFormat);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void populateImages(double dpiFactor, int dpi) throws IOException {
|
|
||||||
for (Entity entity : diagram.entities().values()) {
|
|
||||||
final DrawFile f = createImage(entity, dpiFactor, dpi);
|
|
||||||
if (f != null) {
|
|
||||||
entity.setImageFile(f);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void populateImagesLink(double dpiFactor, int dpi) throws IOException {
|
|
||||||
for (Link link : diagram.getLinks()) {
|
|
||||||
final String note = link.getNote();
|
|
||||||
if (note == null) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
final DrawFile f = createImageForNote(note, null, dpiFactor, dpi);
|
|
||||||
if (f != null) {
|
|
||||||
link.setImageFile(f);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
DrawFile createImage(Entity entity, double dpiFactor, int dpi) throws IOException {
|
DrawFile createImage(Entity entity, double dpiFactor, int dpi) throws IOException {
|
||||||
if (entity.getType() == EntityType.NOTE) {
|
if (entity.getType() == EntityType.NOTE) {
|
||||||
return createImageForNote(entity.getDisplay(), entity.getSpecificBackColor(), dpiFactor, dpi);
|
return createImageForNote(entity.getDisplay(), entity.getSpecificBackColor(), dpiFactor, dpi);
|
||||||
@ -688,7 +648,8 @@ public final class CucaDiagramFileMaker {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private DrawFile createImageForNote(String display, HtmlColor backColor, double dpiFactor, int dpi) throws IOException {
|
private DrawFile createImageForNoteOld2(String display, HtmlColor backColor, double dpiFactor, int dpi)
|
||||||
|
throws IOException {
|
||||||
final File fPng = FileUtils.createTempFile("plantumlB", ".png");
|
final File fPng = FileUtils.createTempFile("plantumlB", ".png");
|
||||||
|
|
||||||
final Rose skin = new Rose();
|
final Rose skin = new Rose();
|
||||||
@ -722,6 +683,58 @@ public final class CucaDiagramFileMaker {
|
|||||||
return DrawFile.createFromFile(fPng, getSvg(ug), fEps);
|
return DrawFile.createFromFile(fPng, getSvg(ug), fEps);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private DrawFile createImageForNote(String display, HtmlColor backColor, final double dpiFactor, final int dpi)
|
||||||
|
throws IOException {
|
||||||
|
|
||||||
|
final Rose skin = new Rose();
|
||||||
|
|
||||||
|
final ISkinParam skinParam = new SkinParamBackcolored(getSkinParam(), backColor);
|
||||||
|
final Component comp = skin
|
||||||
|
.createComponent(ComponentType.NOTE, skinParam, StringUtils.getWithNewlines(display));
|
||||||
|
|
||||||
|
final int width = (int) (comp.getPreferredWidth(stringBounder) * dpiFactor);
|
||||||
|
final int height = (int) (comp.getPreferredHeight(stringBounder) * dpiFactor);
|
||||||
|
|
||||||
|
final Color background = diagram.getSkinParam().getBackgroundColor().getColor();
|
||||||
|
|
||||||
|
final Lazy<File> lpng = new Lazy<File>() {
|
||||||
|
|
||||||
|
public File getNow() throws IOException {
|
||||||
|
final File fPng = FileUtils.createTempFile("plantumlB", ".png");
|
||||||
|
final EmptyImageBuilder builder = new EmptyImageBuilder(width, height, background);
|
||||||
|
final BufferedImage im = builder.getBufferedImage();
|
||||||
|
final Graphics2D g2d = builder.getGraphics2D();
|
||||||
|
|
||||||
|
comp.drawU(new UGraphicG2d(g2d, null, dpiFactor), new Dimension(width, height), new SimpleContext2D(
|
||||||
|
false));
|
||||||
|
PngIO.write(im, fPng, dpi);
|
||||||
|
g2d.dispose();
|
||||||
|
return fPng;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
final Lazy<String> lsvg = new Lazy<String>() {
|
||||||
|
public String getNow() throws IOException {
|
||||||
|
final UGraphicSvg ug = new UGraphicSvg(true);
|
||||||
|
comp.drawU(ug, new Dimension(width, height), new SimpleContext2D(false));
|
||||||
|
return getSvg(ug);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
final Lazy<File> leps = new Lazy<File>() {
|
||||||
|
public File getNow() throws IOException {
|
||||||
|
final File fEps = FileUtils.createTempFile("plantumlB", ".eps");
|
||||||
|
final PrintWriter pw = new PrintWriter(fEps);
|
||||||
|
final UGraphicEps uEps = new UGraphicEps(EpsStrategy.getDefault());
|
||||||
|
comp.drawU(uEps, new Dimension(width, height), new SimpleContext2D(false));
|
||||||
|
pw.print(uEps.getEPSCode());
|
||||||
|
pw.close();
|
||||||
|
return fEps;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
return DrawFile.create(lpng, lsvg, leps, null);
|
||||||
|
}
|
||||||
|
|
||||||
static public String getSvg(UGraphicSvg ug) throws IOException {
|
static public String getSvg(UGraphicSvg ug) throws IOException {
|
||||||
final ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
final ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
||||||
ug.createXml(baos);
|
ug.createXml(baos);
|
||||||
@ -739,9 +752,10 @@ public final class CucaDiagramFileMaker {
|
|||||||
|
|
||||||
private DrawFile createImageForCircleInterface(Entity entity, final double dpiFactor) throws IOException {
|
private DrawFile createImageForCircleInterface(Entity entity, final double dpiFactor) throws IOException {
|
||||||
final String stereo = entity.getStereotype() == null ? null : entity.getStereotype().getLabel();
|
final String stereo = entity.getStereotype() == null ? null : entity.getStereotype().getLabel();
|
||||||
final Color interfaceBackground = rose.getHtmlColor(getSkinParam(), ColorParam.componentInterfaceBackground, stereo)
|
final Color interfaceBackground = rose.getHtmlColor(getSkinParam(), ColorParam.componentInterfaceBackground,
|
||||||
|
stereo).getColor();
|
||||||
|
final Color interfaceBorder = rose.getHtmlColor(getSkinParam(), ColorParam.componentInterfaceBorder, stereo)
|
||||||
.getColor();
|
.getColor();
|
||||||
final Color interfaceBorder = rose.getHtmlColor(getSkinParam(), ColorParam.componentInterfaceBorder, stereo).getColor();
|
|
||||||
final Color background = rose.getHtmlColor(getSkinParam(), ColorParam.background, stereo).getColor();
|
final Color background = rose.getHtmlColor(getSkinParam(), ColorParam.background, stereo).getColor();
|
||||||
final CircleInterface circleInterface = new CircleInterface(interfaceBackground, interfaceBorder);
|
final CircleInterface circleInterface = new CircleInterface(interfaceBackground, interfaceBorder);
|
||||||
|
|
||||||
@ -785,7 +799,8 @@ public final class CucaDiagramFileMaker {
|
|||||||
|
|
||||||
private DrawFile createImageForActor(Entity entity, final double dpiFactor) throws IOException {
|
private DrawFile createImageForActor(Entity entity, final double dpiFactor) throws IOException {
|
||||||
final String stereo = entity.getStereotype() == null ? null : entity.getStereotype().getLabel();
|
final String stereo = entity.getStereotype() == null ? null : entity.getStereotype().getLabel();
|
||||||
final Color actorBackground = rose.getHtmlColor(getSkinParam(), ColorParam.usecaseActorBackground, stereo).getColor();
|
final Color actorBackground = rose.getHtmlColor(getSkinParam(), ColorParam.usecaseActorBackground, stereo)
|
||||||
|
.getColor();
|
||||||
final Color actorBorder = rose.getHtmlColor(getSkinParam(), ColorParam.usecaseActorBorder, stereo).getColor();
|
final Color actorBorder = rose.getHtmlColor(getSkinParam(), ColorParam.usecaseActorBorder, stereo).getColor();
|
||||||
final Color background = rose.getHtmlColor(getSkinParam(), ColorParam.background, stereo).getColor();
|
final Color background = rose.getHtmlColor(getSkinParam(), ColorParam.background, stereo).getColor();
|
||||||
final StickMan stickMan = new StickMan(actorBackground, actorBorder);
|
final StickMan stickMan = new StickMan(actorBackground, actorBorder);
|
||||||
@ -853,9 +868,7 @@ public final class CucaDiagramFileMaker {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
deltaY = 0;
|
deltaY = 0;
|
||||||
populateImages(diagram.getDpiFactor(fileFormatOption), diagram.getDpi(fileFormatOption));
|
final GraphvizMaker dotMaker = populateImagesAndCreateGraphvizMaker(dotStrings, fileFormatOption);
|
||||||
populateImagesLink(diagram.getDpiFactor(fileFormatOption), diagram.getDpi(fileFormatOption));
|
|
||||||
final GraphvizMaker dotMaker = createDotMaker(dotStrings, fileFormatOption);
|
|
||||||
final String dotString = dotMaker.createDotString();
|
final String dotString = dotMaker.createDotString();
|
||||||
|
|
||||||
if (OptionFlags.getInstance().isKeepTmpFiles()) {
|
if (OptionFlags.getInstance().isKeepTmpFiles()) {
|
||||||
@ -925,4 +938,58 @@ public final class CucaDiagramFileMaker {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private GraphvizMaker populateImagesAndCreateGraphvizMaker(List<String> dotStrings,
|
||||||
|
FileFormatOption fileFormatOption) throws IOException, InterruptedException {
|
||||||
|
populateImages(diagram.getDpiFactor(fileFormatOption), diagram.getDpi(fileFormatOption));
|
||||||
|
populateImagesLink(diagram.getDpiFactor(fileFormatOption), diagram.getDpi(fileFormatOption));
|
||||||
|
final GraphvizMaker dotMaker = createDotMaker(dotStrings, fileFormatOption);
|
||||||
|
return dotMaker;
|
||||||
|
}
|
||||||
|
|
||||||
|
private GraphvizMaker createDotMaker(List<String> dotStrings, FileFormatOption fileFormatOption)
|
||||||
|
throws IOException, InterruptedException {
|
||||||
|
|
||||||
|
final FileFormat fileFormat = fileFormatOption.getFileFormat();
|
||||||
|
if (diagram.getUmlDiagramType() == UmlDiagramType.STATE
|
||||||
|
|| diagram.getUmlDiagramType() == UmlDiagramType.ACTIVITY) {
|
||||||
|
new CucaDiagramSimplifier(diagram, dotStrings, fileFormat);
|
||||||
|
}
|
||||||
|
final DotData dotData = new DotData(null, diagram.getLinks(), diagram.entities(), diagram.getUmlDiagramType(),
|
||||||
|
diagram.getSkinParam(), diagram.getRankdir(), diagram, diagram);
|
||||||
|
|
||||||
|
dotData.setDpi(diagram.getDpi(fileFormatOption));
|
||||||
|
|
||||||
|
if (diagram.getUmlDiagramType() == UmlDiagramType.CLASS || diagram.getUmlDiagramType() == UmlDiagramType.OBJECT) {
|
||||||
|
dotData.setStaticImagesMap(staticFilesMap);
|
||||||
|
|
||||||
|
if (diagram.isVisibilityModifierPresent()) {
|
||||||
|
dotData.setVisibilityModifierPresent(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return new DotMaker(dotData, dotStrings, fileFormat);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void populateImages(double dpiFactor, int dpi) throws IOException {
|
||||||
|
for (Entity entity : diagram.entities().values()) {
|
||||||
|
final DrawFile f = createImage(entity, dpiFactor, dpi);
|
||||||
|
if (f != null) {
|
||||||
|
entity.setImageFile(f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void populateImagesLink(double dpiFactor, int dpi) throws IOException {
|
||||||
|
for (Link link : diagram.getLinks()) {
|
||||||
|
final String note = link.getNote();
|
||||||
|
if (note == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
final DrawFile f = createImageForNote(note, null, dpiFactor, dpi);
|
||||||
|
if (f != null) {
|
||||||
|
link.setImageFile(f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
*
|
*
|
||||||
* Original Author: Arnaud Roques
|
* Original Author: Arnaud Roques
|
||||||
*
|
*
|
||||||
* Revision $Revision: 6121 $
|
* Revision $Revision: 6141 $
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package net.sourceforge.plantuml.cucadiagram.dot;
|
package net.sourceforge.plantuml.cucadiagram.dot;
|
||||||
@ -838,7 +838,7 @@ final public class DotMaker implements GraphvizMaker {
|
|||||||
sb.append(entity.getUid() + " [margin=0,pad=0," + label + ",shape=none,image=\"" + absolutePath + "\"];");
|
sb.append(entity.getUid() + " [margin=0,pad=0," + label + ",shape=none,image=\"" + absolutePath + "\"];");
|
||||||
} else if (type == EntityType.ACTIVITY) {
|
} else if (type == EntityType.ACTIVITY) {
|
||||||
String shape = "octagon";
|
String shape = "octagon";
|
||||||
if (entity.getImageFile() != null) {
|
if (data.getSkinParam().useOctagonForActivity()==false || entity.getImageFile() != null) {
|
||||||
shape = "rect";
|
shape = "rect";
|
||||||
}
|
}
|
||||||
sb.append(entity.getUid() + " [fontcolor=" + getFontColorString(FontParam.ACTIVITY, stereo) + ",fillcolor="
|
sb.append(entity.getUid() + " [fontcolor=" + getFontColorString(FontParam.ACTIVITY, stereo) + ",fillcolor="
|
||||||
|
@ -56,11 +56,16 @@ public class DrawFile {
|
|||||||
private int heightPng = -1;
|
private int heightPng = -1;
|
||||||
|
|
||||||
public static DrawFile create(Lazy<File> png, Lazy<String> svg, Lazy<File> eps, Object signature) {
|
public static DrawFile create(Lazy<File> png, Lazy<String> svg, Lazy<File> eps, Object signature) {
|
||||||
DrawFile result = cache.get(signature);
|
DrawFile result = null;
|
||||||
|
if (signature != null) {
|
||||||
|
result = cache.get(signature);
|
||||||
|
}
|
||||||
if (result == null) {
|
if (result == null) {
|
||||||
result = new DrawFile(png, svg, eps);
|
result = new DrawFile(png, svg, eps);
|
||||||
|
if (signature != null) {
|
||||||
cache.put(signature, result);
|
cache.put(signature, result);
|
||||||
Log.info("DrawFile cache size = " + cache.size());
|
Log.info("DrawFile cache size = " + cache.size());
|
||||||
|
}
|
||||||
FileUtils.deleteOnExit(result);
|
FileUtils.deleteOnExit(result);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
@ -80,10 +85,10 @@ public class DrawFile {
|
|||||||
|
|
||||||
private DrawFile(File fPng, String svg, File fEps) {
|
private DrawFile(File fPng, String svg, File fEps) {
|
||||||
this(new Unlazy<File>(fPng), new Unlazy<String>(svg), new Unlazy<File>(fEps));
|
this(new Unlazy<File>(fPng), new Unlazy<String>(svg), new Unlazy<File>(fEps));
|
||||||
// if (svg.contains("\\")) {
|
// if (svg.contains("\\")) {
|
||||||
// System.err.println("svg="+svg);
|
// System.err.println("svg="+svg);
|
||||||
// throw new IllegalArgumentException();
|
// throw new IllegalArgumentException();
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
public File getPngOrEps(boolean isEps) throws IOException {
|
public File getPngOrEps(boolean isEps) throws IOException {
|
||||||
|
@ -142,7 +142,7 @@ public class InGroupableList implements InGroupable {
|
|||||||
public double getMinX(StringBounder stringBounder) {
|
public double getMinX(StringBounder stringBounder) {
|
||||||
final InGroupable min = getMin(stringBounder);
|
final InGroupable min = getMin(stringBounder);
|
||||||
if (min == null) {
|
if (min == null) {
|
||||||
return 0;
|
return MARGIN10 + MARGIN5;
|
||||||
}
|
}
|
||||||
double m = min.getMinX(stringBounder);
|
double m = min.getMinX(stringBounder);
|
||||||
if (min instanceof MessageExoArrow
|
if (min instanceof MessageExoArrow
|
||||||
@ -169,7 +169,7 @@ public class InGroupableList implements InGroupable {
|
|||||||
private final double getMaxXInternal(StringBounder stringBounder) {
|
private final double getMaxXInternal(StringBounder stringBounder) {
|
||||||
final InGroupable max = getMax(stringBounder);
|
final InGroupable max = getMax(stringBounder);
|
||||||
if (max == null) {
|
if (max == null) {
|
||||||
return minWidth;
|
return MARGIN10 + MARGIN5 + minWidth;
|
||||||
}
|
}
|
||||||
double m = max.getMaxX(stringBounder);
|
double m = max.getMaxX(stringBounder);
|
||||||
if (max instanceof MessageExoArrow
|
if (max instanceof MessageExoArrow
|
||||||
|
@ -0,0 +1,77 @@
|
|||||||
|
/* ========================================================================
|
||||||
|
* PlantUML : a free UML diagram generator
|
||||||
|
* ========================================================================
|
||||||
|
*
|
||||||
|
* (C) Copyright 2009, Arnaud Roques
|
||||||
|
*
|
||||||
|
* Project Info: http://plantuml.sourceforge.net
|
||||||
|
*
|
||||||
|
* This file is part of PlantUML.
|
||||||
|
*
|
||||||
|
* PlantUML is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* PlantUML distributed in the hope that it will be useful, but
|
||||||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
||||||
|
* License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||||
|
* USA.
|
||||||
|
*
|
||||||
|
* [Java is a trademark or registered trademark of Sun Microsystems, Inc.
|
||||||
|
* in the United States and other countries.]
|
||||||
|
*
|
||||||
|
* Original Author: Arnaud Roques
|
||||||
|
*
|
||||||
|
* Revision $Revision: 4836 $
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package net.sourceforge.plantuml.sequencediagram;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class ParticipantEngloberContexted {
|
||||||
|
|
||||||
|
final private ParticipantEnglober participantEnglober;
|
||||||
|
final private List<Participant> participants = new ArrayList<Participant>();
|
||||||
|
|
||||||
|
public ParticipantEngloberContexted(ParticipantEnglober participantEnglober, Participant first) {
|
||||||
|
this.participantEnglober = participantEnglober;
|
||||||
|
this.participants.add(first);
|
||||||
|
}
|
||||||
|
|
||||||
|
public final ParticipantEnglober getParticipantEnglober() {
|
||||||
|
return participantEnglober;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean contains(Participant p) {
|
||||||
|
return participants.contains(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void add(Participant p) {
|
||||||
|
if (participants.contains(p)) {
|
||||||
|
throw new IllegalArgumentException();
|
||||||
|
}
|
||||||
|
participants.add(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
public final Participant getFirst2() {
|
||||||
|
return participants.get(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public final Participant getLast2() {
|
||||||
|
return participants.get(participants.size() - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return super.toString()+" "+participants;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -28,7 +28,7 @@
|
|||||||
*
|
*
|
||||||
* Original Author: Arnaud Roques
|
* Original Author: Arnaud Roques
|
||||||
*
|
*
|
||||||
* Revision $Revision: 6097 $
|
* Revision $Revision: 6137 $
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package net.sourceforge.plantuml.sequencediagram;
|
package net.sourceforge.plantuml.sequencediagram;
|
||||||
@ -56,8 +56,9 @@ import net.sourceforge.plantuml.sequencediagram.command.CommandNewpage;
|
|||||||
import net.sourceforge.plantuml.sequencediagram.command.CommandNoteOnArrow;
|
import net.sourceforge.plantuml.sequencediagram.command.CommandNoteOnArrow;
|
||||||
import net.sourceforge.plantuml.sequencediagram.command.CommandNoteOverSeveral;
|
import net.sourceforge.plantuml.sequencediagram.command.CommandNoteOverSeveral;
|
||||||
import net.sourceforge.plantuml.sequencediagram.command.CommandNoteSequence;
|
import net.sourceforge.plantuml.sequencediagram.command.CommandNoteSequence;
|
||||||
import net.sourceforge.plantuml.sequencediagram.command.CommandParticipant;
|
import net.sourceforge.plantuml.sequencediagram.command.CommandParticipantA;
|
||||||
import net.sourceforge.plantuml.sequencediagram.command.CommandParticipant2;
|
import net.sourceforge.plantuml.sequencediagram.command.CommandParticipantA2;
|
||||||
|
import net.sourceforge.plantuml.sequencediagram.command.CommandParticipantA3;
|
||||||
import net.sourceforge.plantuml.sequencediagram.command.CommandSkin;
|
import net.sourceforge.plantuml.sequencediagram.command.CommandSkin;
|
||||||
|
|
||||||
public class SequenceDiagramFactory extends AbstractUmlSystemCommandFactory {
|
public class SequenceDiagramFactory extends AbstractUmlSystemCommandFactory {
|
||||||
@ -70,8 +71,9 @@ public class SequenceDiagramFactory extends AbstractUmlSystemCommandFactory {
|
|||||||
|
|
||||||
addCommonCommands(system);
|
addCommonCommands(system);
|
||||||
|
|
||||||
addCommand(new CommandParticipant(system));
|
addCommand(new CommandParticipantA(system));
|
||||||
addCommand(new CommandParticipant2(system));
|
addCommand(new CommandParticipantA2(system));
|
||||||
|
addCommand(new CommandParticipantA3(system));
|
||||||
addCommand(new CommandArrow(system));
|
addCommand(new CommandArrow(system));
|
||||||
addCommand(new CommandExoArrowLeft(system));
|
addCommand(new CommandExoArrowLeft(system));
|
||||||
addCommand(new CommandExoArrowRight(system));
|
addCommand(new CommandExoArrowRight(system));
|
||||||
|
@ -34,47 +34,51 @@
|
|||||||
package net.sourceforge.plantuml.sequencediagram.command;
|
package net.sourceforge.plantuml.sequencediagram.command;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import net.sourceforge.plantuml.FontParam;
|
import net.sourceforge.plantuml.FontParam;
|
||||||
import net.sourceforge.plantuml.StringUtils;
|
import net.sourceforge.plantuml.StringUtils;
|
||||||
import net.sourceforge.plantuml.command.CommandExecutionResult;
|
import net.sourceforge.plantuml.command.CommandExecutionResult;
|
||||||
import net.sourceforge.plantuml.command.SingleLineCommand;
|
import net.sourceforge.plantuml.command.SingleLineCommand2;
|
||||||
|
import net.sourceforge.plantuml.command.regex.RegexConcat;
|
||||||
|
import net.sourceforge.plantuml.command.regex.RegexPartialMatch;
|
||||||
import net.sourceforge.plantuml.cucadiagram.Stereotype;
|
import net.sourceforge.plantuml.cucadiagram.Stereotype;
|
||||||
import net.sourceforge.plantuml.sequencediagram.Participant;
|
import net.sourceforge.plantuml.sequencediagram.Participant;
|
||||||
import net.sourceforge.plantuml.sequencediagram.ParticipantType;
|
import net.sourceforge.plantuml.sequencediagram.ParticipantType;
|
||||||
import net.sourceforge.plantuml.sequencediagram.SequenceDiagram;
|
import net.sourceforge.plantuml.sequencediagram.SequenceDiagram;
|
||||||
|
|
||||||
public class CommandParticipant extends SingleLineCommand<SequenceDiagram> {
|
|
||||||
|
|
||||||
public CommandParticipant(SequenceDiagram sequenceDiagram) {
|
public abstract class CommandParticipant extends SingleLineCommand2<SequenceDiagram> {
|
||||||
super(sequenceDiagram,
|
|
||||||
"(?i)^(participant|actor)\\s+(?:\"([^\"]+)\"\\s+as\\s+)?([\\p{L}0-9_.]+)(?:\\s*(\\<\\<.*\\>\\>))?\\s*(#\\w+)?$");
|
public CommandParticipant(SequenceDiagram sequenceDiagram, RegexConcat pattern) {
|
||||||
|
super(sequenceDiagram, pattern);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected CommandExecutionResult executeArg(List<String> arg) {
|
final protected CommandExecutionResult executeArg(Map<String, RegexPartialMatch> arg2) {
|
||||||
final String code = arg.get(2);
|
final String code = arg2.get("CODE").get(0);
|
||||||
if (getSystem().participants().containsKey(code)) {
|
if (getSystem().participants().containsKey(code)) {
|
||||||
getSystem().putParticipantInLast(code);
|
getSystem().putParticipantInLast(code);
|
||||||
return CommandExecutionResult.ok();
|
return CommandExecutionResult.ok();
|
||||||
}
|
}
|
||||||
|
|
||||||
List<String> strings = null;
|
List<String> strings = null;
|
||||||
if (arg.get(1) != null) {
|
if (arg2.get("FULL").get(0) != null) {
|
||||||
strings = StringUtils.getWithNewlines(arg.get(1));
|
strings = StringUtils.getWithNewlines(arg2.get("FULL").get(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
final ParticipantType type = ParticipantType.valueOf(arg.get(0).toUpperCase());
|
final ParticipantType type = ParticipantType.valueOf(arg2.get("TYPE").get(0).toUpperCase());
|
||||||
final Participant participant = getSystem().createNewParticipant(type, code, strings);
|
final Participant participant = getSystem().createNewParticipant(type, code, strings);
|
||||||
|
|
||||||
final String stereotype = arg.get(3);
|
final String stereotype = arg2.get("STEREO").get(0);
|
||||||
|
|
||||||
if (stereotype != null) {
|
if (stereotype != null) {
|
||||||
participant.setStereotype(new Stereotype(stereotype,
|
participant.setStereotype(new Stereotype(stereotype,
|
||||||
getSystem().getSkinParam().getCircledCharacterRadius(), getSystem().getSkinParam().getFont(
|
getSystem().getSkinParam().getCircledCharacterRadius(), getSystem().getSkinParam().getFont(
|
||||||
FontParam.CIRCLED_CHARACTER, null)));
|
FontParam.CIRCLED_CHARACTER, null)));
|
||||||
}
|
}
|
||||||
participant.setSpecificBackcolor(arg.get(4));
|
participant.setSpecificBackcolor(arg2.get("COLOR").get(0));
|
||||||
|
|
||||||
return CommandExecutionResult.ok();
|
return CommandExecutionResult.ok();
|
||||||
}
|
}
|
||||||
|
@ -1,79 +0,0 @@
|
|||||||
/* ========================================================================
|
|
||||||
* PlantUML : a free UML diagram generator
|
|
||||||
* ========================================================================
|
|
||||||
*
|
|
||||||
* (C) Copyright 2009, Arnaud Roques
|
|
||||||
*
|
|
||||||
* Project Info: http://plantuml.sourceforge.net
|
|
||||||
*
|
|
||||||
* This file is part of PlantUML.
|
|
||||||
*
|
|
||||||
* PlantUML is free software; you can redistribute it and/or modify it
|
|
||||||
* under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* PlantUML distributed in the hope that it will be useful, but
|
|
||||||
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
||||||
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
|
||||||
* License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
|
||||||
* USA.
|
|
||||||
*
|
|
||||||
* [Java is a trademark or registered trademark of Sun Microsystems, Inc.
|
|
||||||
* in the United States and other countries.]
|
|
||||||
*
|
|
||||||
* Original Author: Arnaud Roques
|
|
||||||
*
|
|
||||||
* Revision $Revision: 4762 $
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
package net.sourceforge.plantuml.sequencediagram.command;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import net.sourceforge.plantuml.FontParam;
|
|
||||||
import net.sourceforge.plantuml.StringUtils;
|
|
||||||
import net.sourceforge.plantuml.command.CommandExecutionResult;
|
|
||||||
import net.sourceforge.plantuml.command.SingleLineCommand;
|
|
||||||
import net.sourceforge.plantuml.cucadiagram.Stereotype;
|
|
||||||
import net.sourceforge.plantuml.sequencediagram.Participant;
|
|
||||||
import net.sourceforge.plantuml.sequencediagram.ParticipantType;
|
|
||||||
import net.sourceforge.plantuml.sequencediagram.SequenceDiagram;
|
|
||||||
|
|
||||||
public class CommandParticipant2 extends SingleLineCommand<SequenceDiagram> {
|
|
||||||
|
|
||||||
public CommandParticipant2(SequenceDiagram sequenceDiagram) {
|
|
||||||
super(sequenceDiagram,
|
|
||||||
"(?i)^(participant|actor)\\s+([\\p{L}0-9_.]+)\\s+as\\s+\"([^\"]+)\"(?:\\s*(\\<\\<.*\\>\\>))?\\s*(#\\w+)?$");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected CommandExecutionResult executeArg(List<String> arg) {
|
|
||||||
final String code = arg.get(1);
|
|
||||||
if (getSystem().participants().containsKey(code)) {
|
|
||||||
getSystem().putParticipantInLast(code);
|
|
||||||
return CommandExecutionResult.ok();
|
|
||||||
}
|
|
||||||
|
|
||||||
final List<String> strings = StringUtils.getWithNewlines(arg.get(2));
|
|
||||||
|
|
||||||
final ParticipantType type = ParticipantType.valueOf(arg.get(0).toUpperCase());
|
|
||||||
final Participant participant = getSystem().createNewParticipant(type, code, strings);
|
|
||||||
|
|
||||||
final String stereotype = arg.get(3);
|
|
||||||
|
|
||||||
if (stereotype != null) {
|
|
||||||
participant.setStereotype(new Stereotype(stereotype,
|
|
||||||
getSystem().getSkinParam().getCircledCharacterRadius(), getSystem().getSkinParam().getFont(
|
|
||||||
FontParam.CIRCLED_CHARACTER, null)));
|
|
||||||
}
|
|
||||||
participant.setSpecificBackcolor(arg.get(4));
|
|
||||||
|
|
||||||
return CommandExecutionResult.ok();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -0,0 +1,58 @@
|
|||||||
|
/* ========================================================================
|
||||||
|
* PlantUML : a free UML diagram generator
|
||||||
|
* ========================================================================
|
||||||
|
*
|
||||||
|
* (C) Copyright 2009, Arnaud Roques
|
||||||
|
*
|
||||||
|
* Project Info: http://plantuml.sourceforge.net
|
||||||
|
*
|
||||||
|
* This file is part of PlantUML.
|
||||||
|
*
|
||||||
|
* PlantUML is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* PlantUML distributed in the hope that it will be useful, but
|
||||||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
||||||
|
* License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||||
|
* USA.
|
||||||
|
*
|
||||||
|
* [Java is a trademark or registered trademark of Sun Microsystems, Inc.
|
||||||
|
* in the United States and other countries.]
|
||||||
|
*
|
||||||
|
* Original Author: Arnaud Roques
|
||||||
|
*
|
||||||
|
* Revision $Revision: 6109 $
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package net.sourceforge.plantuml.sequencediagram.command;
|
||||||
|
|
||||||
|
import net.sourceforge.plantuml.command.regex.RegexConcat;
|
||||||
|
import net.sourceforge.plantuml.command.regex.RegexLeaf;
|
||||||
|
import net.sourceforge.plantuml.sequencediagram.SequenceDiagram;
|
||||||
|
|
||||||
|
public class CommandParticipantA extends CommandParticipant {
|
||||||
|
|
||||||
|
public CommandParticipantA(SequenceDiagram sequenceDiagram) {
|
||||||
|
super(sequenceDiagram, getRegexConcat());
|
||||||
|
}
|
||||||
|
|
||||||
|
static RegexConcat getRegexConcat() {
|
||||||
|
return new RegexConcat(new RegexLeaf("^"), //
|
||||||
|
new RegexLeaf("TYPE", "(participant|actor)"), //
|
||||||
|
new RegexLeaf("\\s+"), //
|
||||||
|
new RegexLeaf("FULL", "(?:\"([^\"]+)\"\\s+as\\s+)?"), //
|
||||||
|
new RegexLeaf("CODE", "([\\p{L}0-9_.]+)"), //
|
||||||
|
new RegexLeaf("STEREO", "(?:\\s*(\\<\\<.*\\>\\>))?"), //
|
||||||
|
new RegexLeaf("\\s*"), //
|
||||||
|
new RegexLeaf("COLOR", "(#\\w+)?"), //
|
||||||
|
new RegexLeaf("$"));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,59 @@
|
|||||||
|
/* ========================================================================
|
||||||
|
* PlantUML : a free UML diagram generator
|
||||||
|
* ========================================================================
|
||||||
|
*
|
||||||
|
* (C) Copyright 2009, Arnaud Roques
|
||||||
|
*
|
||||||
|
* Project Info: http://plantuml.sourceforge.net
|
||||||
|
*
|
||||||
|
* This file is part of PlantUML.
|
||||||
|
*
|
||||||
|
* PlantUML is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* PlantUML distributed in the hope that it will be useful, but
|
||||||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
||||||
|
* License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||||
|
* USA.
|
||||||
|
*
|
||||||
|
* [Java is a trademark or registered trademark of Sun Microsystems, Inc.
|
||||||
|
* in the United States and other countries.]
|
||||||
|
*
|
||||||
|
* Original Author: Arnaud Roques
|
||||||
|
*
|
||||||
|
* Revision $Revision: 6109 $
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package net.sourceforge.plantuml.sequencediagram.command;
|
||||||
|
|
||||||
|
import net.sourceforge.plantuml.command.regex.RegexConcat;
|
||||||
|
import net.sourceforge.plantuml.command.regex.RegexLeaf;
|
||||||
|
import net.sourceforge.plantuml.sequencediagram.SequenceDiagram;
|
||||||
|
|
||||||
|
public class CommandParticipantA2 extends CommandParticipant {
|
||||||
|
|
||||||
|
public CommandParticipantA2(SequenceDiagram sequenceDiagram) {
|
||||||
|
super(sequenceDiagram, getRegexConcat());
|
||||||
|
}
|
||||||
|
|
||||||
|
static RegexConcat getRegexConcat() {
|
||||||
|
return new RegexConcat(new RegexLeaf("^"), //
|
||||||
|
new RegexLeaf("TYPE", "(participant|actor)"), //
|
||||||
|
new RegexLeaf("\\s+"), //
|
||||||
|
new RegexLeaf("CODE", "([\\p{L}0-9_.]+)"), //
|
||||||
|
new RegexLeaf("\\s+as\\s+"), //
|
||||||
|
new RegexLeaf("FULL", "\"([^\"]+)\""), //
|
||||||
|
new RegexLeaf("STEREO", "(?:\\s*(\\<\\<.*\\>\\>))?"), //
|
||||||
|
new RegexLeaf("\\s*"), //
|
||||||
|
new RegexLeaf("COLOR", "(#\\w+)?"), //
|
||||||
|
new RegexLeaf("$"));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,58 @@
|
|||||||
|
/* ========================================================================
|
||||||
|
* PlantUML : a free UML diagram generator
|
||||||
|
* ========================================================================
|
||||||
|
*
|
||||||
|
* (C) Copyright 2009, Arnaud Roques
|
||||||
|
*
|
||||||
|
* Project Info: http://plantuml.sourceforge.net
|
||||||
|
*
|
||||||
|
* This file is part of PlantUML.
|
||||||
|
*
|
||||||
|
* PlantUML is free software; you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* PlantUML distributed in the hope that it will be useful, but
|
||||||
|
* WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
||||||
|
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
|
||||||
|
* License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
|
||||||
|
* USA.
|
||||||
|
*
|
||||||
|
* [Java is a trademark or registered trademark of Sun Microsystems, Inc.
|
||||||
|
* in the United States and other countries.]
|
||||||
|
*
|
||||||
|
* Original Author: Arnaud Roques
|
||||||
|
*
|
||||||
|
* Revision $Revision: 6109 $
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package net.sourceforge.plantuml.sequencediagram.command;
|
||||||
|
|
||||||
|
import net.sourceforge.plantuml.command.regex.RegexConcat;
|
||||||
|
import net.sourceforge.plantuml.command.regex.RegexLeaf;
|
||||||
|
import net.sourceforge.plantuml.sequencediagram.SequenceDiagram;
|
||||||
|
|
||||||
|
public class CommandParticipantA3 extends CommandParticipant {
|
||||||
|
|
||||||
|
public CommandParticipantA3(SequenceDiagram sequenceDiagram) {
|
||||||
|
super(sequenceDiagram, getRegexConcat());
|
||||||
|
}
|
||||||
|
|
||||||
|
static RegexConcat getRegexConcat() {
|
||||||
|
return new RegexConcat(new RegexLeaf("^"), //
|
||||||
|
new RegexLeaf("TYPE", "(participant|actor)"), //
|
||||||
|
new RegexLeaf("\\s+"), //
|
||||||
|
new RegexLeaf("FULL", "([\\p{L}0-9_.]+)\\s+as\\s+"), //
|
||||||
|
new RegexLeaf("CODE", "([\\p{L}0-9_.]+)"), //
|
||||||
|
new RegexLeaf("STEREO", "(?:\\s*(\\<\\<.*\\>\\>))?"), //
|
||||||
|
new RegexLeaf("\\s*"), //
|
||||||
|
new RegexLeaf("COLOR", "(#\\w+)?"), //
|
||||||
|
new RegexLeaf("$"));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -28,7 +28,7 @@
|
|||||||
*
|
*
|
||||||
* Original Author: Arnaud Roques
|
* Original Author: Arnaud Roques
|
||||||
*
|
*
|
||||||
* Revision $Revision: 6122 $
|
* Revision $Revision: 6142 $
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
package net.sourceforge.plantuml.version;
|
package net.sourceforge.plantuml.version;
|
||||||
@ -36,11 +36,11 @@ package net.sourceforge.plantuml.version;
|
|||||||
public class Version {
|
public class Version {
|
||||||
|
|
||||||
public static int version() {
|
public static int version() {
|
||||||
return 6121;
|
return 6141;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static long compileTime() {
|
public static long compileTime() {
|
||||||
return 1297683757562L;
|
return 1298495043843L;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user