diff --git a/prism/src/explicit/graphviz/Decoration.java b/prism/src/explicit/graphviz/Decoration.java
index e3bc62b9..969a0317 100644
--- a/prism/src/explicit/graphviz/Decoration.java
+++ b/prism/src/explicit/graphviz/Decoration.java
@@ -27,7 +27,6 @@
package explicit.graphviz;
import java.util.Collections;
-import java.util.EnumMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;
@@ -39,25 +38,52 @@ import java.util.TreeMap;
public class Decoration
{
/** An indication of how the node or edge's label should be rendered by Graphviz */
- public enum LabelType
+ public static enum LabelType
{
/**
* Plain text
* */
- PLAIN,
+ PLAIN("\"", "\"", "\\n"),
+
/**
* HTML-like (a restricted subset of HTML supported by Graphviz, as documented in the
* Node Shapes
* section of the Graphviz manual)
*/
- HTML
- }
+ HTML("<", ">", "
");
- private static final EnumMap LABEL_DELIMITERS = new EnumMap<>(LabelType.class);
- static
- {
- LABEL_DELIMITERS.put(LabelType.PLAIN, new String[]{ "\"", "\\n", "\"" });
- LABEL_DELIMITERS.put(LabelType.HTML, new String[]{ "<", "
", ">" });
+ /** The symbol to start the label text (for this label type) */
+ private final String labelOpen;
+ /** The symbol to end the label text (for this label type) */
+ private final String labelClose;
+ /** The symbol for creating a new line (for this label type) */
+ private final String newLine;
+
+ /** Constructor, set the correct delimiter symbols */
+ private LabelType(String labelOpen, String labelClose, String newLine)
+ {
+ this.labelOpen = labelOpen;
+ this.labelClose = labelClose;
+ this.newLine = newLine;
+ }
+
+ /** Returns the symbol for starting the label text */
+ public String getOpen()
+ {
+ return labelOpen;
+ }
+
+ /** Returns the symbol for ending the label text */
+ public String getClose()
+ {
+ return labelClose;
+ }
+
+ /** Returns the symbol for creating a new line in the label text */
+ public String getNewLine()
+ {
+ return newLine;
+ }
}
/** The label */
@@ -139,8 +165,7 @@ public class Decoration
{
StringBuffer buf = new StringBuffer();
- String[] delimiters = LABEL_DELIMITERS.get(labelType);
- append(buf, "label", delimiters[0] + label + delimiters[2]);
+ append(buf, "label", labelType.getOpen() + label + labelType.getClose());
for (Entry e : attributesRO().entrySet()) {
if (defaults != null) {
@@ -174,13 +199,13 @@ public class Decoration
buffer.append(value);
}
- /** Get the label */
+ /** Get the label text */
public String getLabel()
{
return label;
}
- /** Set the label */
+ /** Set the label text. Note: Ensure that the label text is properly quoted for the used label type. */
public void setLabel(String label)
{
this.label = label;
@@ -202,25 +227,28 @@ public class Decoration
this.labelType = labelType;
}
- /** Add some additional information below the currently existing label */
+ /**
+ * Add some additional information below the currently existing label.
+ * Note: Ensure that the label text is properly quoted for the used label type.
+ */
public void labelAddBelow(String additional)
{
- String[] delimiters = LABEL_DELIMITERS.get(labelType);
- setLabel(getLabel() + delimiters[1] + additional);
+ setLabel(getLabel() + labelType.getNewLine() + additional);
}
/**
* Add some additional information above the currently existing label.
+ * Note: Ensure that the label text is properly quoted for the used label type.
* @param additional the additional text
*/
public void labelAddAbove(String additional)
{
- String[] delimiters = LABEL_DELIMITERS.get(labelType);
- setLabel(additional + delimiters[1] + getLabel());
+ setLabel(additional + labelType.getNewLine() + getLabel());
}
/**
* Add some additional information to the right of the currently existing label.
+ * Note: Ensure that the label text is properly quoted for the used label type.
* @param additional the additional text
* @param separator the separator between the old label and the additional text (may be {@code null})
*/
@@ -231,6 +259,7 @@ public class Decoration
/**
* Add some additional information to the left of the currently existing label.
+ * Note: Ensure that the label text is properly quoted for the used label type.
* @param additional the additional text
* @param separator the separator between the old label and the additional text (may be {@code null})
*/