+import "Visualization/Graphviz/AbstractTypes"\r
+import "Visualization/Graphviz/Property"\r
+import "JavaBuiltin" as Java\r
+\r
+importJava "org.simantics.graphviz.Graph" where\r
+ data Graph\r
+ @JavaName "<init>"\r
+ newPrimitiveGraph :: <Proc> Graph\r
+ setLabel :: Graph -> String -> <Proc> ()\r
+ setRankdir :: Graph -> String -> <Proc> ()\r
+ @JavaName set\r
+ setGenericProperty :: Graph -> String -> String -> <Proc> ()\r
+\r
+instance IGraph Graph where\r
+ iGraph = Java.unsafeCoerce\r
+\r
+applyGraphProperty :: Graph -> Property -> <Proc> ()\r
+applyGraphProperty graph (Label str) = setLabel graph str\r
+applyGraphProperty graph (Rankdir str) = setRankdir graph str\r
+applyGraphProperty graph (GenericProperty property str) = setGenericProperty graph property str\r
+ \r
+newGraph :: [Property] -> <Proc> Graph\r
+newGraph properties = graph\r
+ where\r
+ graph = newPrimitiveGraph\r
+ for properties (applyGraphProperty graph)\r