package ilarkesto.tools.graphviz; import java.util.HashMap; import java.util.Map; public class Node { private Map<String, String> properties = new HashMap<String, String>(); private String name; Node(String name) { this.name = name; fontsize(10); } public Node label(String label) { return property("label", "\"" + label + "\""); } public Node color(String color) { return property("color", color); } public Node margin(float leftRight, float topBottom) { return property("margin", leftRight + "," + topBottom); } public Node shape(String shape) { return property("shape", shape); } public Node fontsize(int pts) { return property("fontsize", String.valueOf(pts)); } public Node shapeBox() { return shape("box"); } private Node property(String name, String value) { if (value != null) properties.put(name, value); return this; } String getName() { return name; } @Override public String toString() { StringBuilder sb = new StringBuilder(); sb.append(name); sb.append(" [ "); boolean first = true; for (Map.Entry<String, String> entry : properties.entrySet()) { if (first) { first = false; } else { sb.append(", "); } sb.append(entry.getKey()).append("=").append(entry.getValue()); } sb.append(" ];"); return sb.toString(); } }