Dot layout tool seem to be broken with version 2.36.0 of graphviz
$ dot -V
dot - graphviz version 2.36.0 (20140111.2315)
To reproduce create a DirectedGraph with a single vertex and choose "Tools->Layout->Layout using dot" from the menu. The following exception is thrown:
Exception in thread "AWT-EventQueue-0" org.workcraft.plugins.layout.generated.TokenMgrError: Lexical error at line 3, column 26. Encountered: "." (46), after : ""
at org.workcraft.plugins.layout.generated.DotParserTokenManager.getNextToken(DotParserTokenManager.java:639)
at org.workcraft.plugins.layout.generated.DotParser.jj_ntk(DotParser.java:348)
at org.workcraft.plugins.layout.generated.DotParser.attr(DotParser.java:132)
at org.workcraft.plugins.layout.generated.DotParser.attr_list(DotParser.java:162)
at org.workcraft.plugins.layout.generated.DotParser.attr_statement(DotParser.java:185)
at org.workcraft.plugins.layout.generated.DotParser.statement(DotParser.java:196)
at org.workcraft.plugins.layout.generated.DotParser.graph(DotParser.java:107)
at org.workcraft.plugins.layout.DotLayoutTool.applyLayout(DotLayoutTool.java:130)
at org.workcraft.plugins.layout.DotLayoutTool.run(DotLayoutTool.java:234)
at org.workcraft.util.Tools.run(Tools.java:38)
at org.workcraft.gui.MainWindow.runTool(MainWindow.java:1062)
at org.workcraft.gui.MainMenu$ToolAction.run(MainMenu.java:69)
at org.workcraft.gui.MainWindow$1.actionPerformed(MainWindow.java:108)
at org.workcraft.gui.actions.ActionMenuItem.fireActionPerformed(ActionMenuItem.java:58)
at org.workcraft.gui.actions.ActionMenuItem.access$0(ActionMenuItem.java:55)
at org.workcraft.gui.actions.ActionMenuItem$ActionForwarder.actionPerformed(ActionMenuItem.java:34)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
at javax.swing.AbstractButton.doClick(AbstractButton.java:357)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:809)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:850)
at java.awt.Component.processMouseEvent(Component.java:6297)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3275)
at java.awt.Component.processEvent(Component.java:6062)
at java.awt.Container.processEvent(Container.java:2039)
at java.awt.Component.dispatchEventImpl(Component.java:4660)
at java.awt.Container.dispatchEventImpl(Container.java:2097)
at java.awt.Component.dispatchEvent(Component.java:4488)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4575)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4236)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4166)
at java.awt.Container.dispatchEventImpl(Container.java:2083)
at java.awt.Window.dispatchEventImpl(Window.java:2489)
at java.awt.Component.dispatchEvent(Component.java:4488)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:674)
at java.awt.EventQueue.access$400(EventQueue.java:81)
at java.awt.EventQueue$2.run(EventQueue.java:633)
at java.awt.EventQueue$2.run(EventQueue.java:631)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98)
at java.awt.EventQueue$3.run(EventQueue.java:647)
at java.awt.EventQueue$3.run(EventQueue.java:645)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:644)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
The intermediate dot file created in the /tmp directory:
digraph work {
graph [bb="0,0,72,86",
nodesep=0.5,
overlap=false,
splines=true
];
node [label="\N",
shape=box
];
1 [fixedsize=true,
height=1.1944,
pos="36,43",
width=1];
}
If graphviz 2.26.0 the format was a little differen:
digraph work {
graph [nodesep="0.5", overlap=false, splines=true];
node [label="\N", shape=box];
graph [bb="0,0,72,128"];
1 [width=1, height="1.7639", fixedsize=true, pos="36,64"];
}
Notice the nodesep="0.5" as opposed to nodesep=0.5 in current version.