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